Automating Access: running your own functions/passing arguments

June 10th, 2011 - 01:05 pm ET by beartiger | Report spam
This question has to do with automating Access. I simply want to run
my own function in Access and pass it arguments. .

So, let's say I have written a public function called foo() in a
module in my Access database. Foo() takes a couple of arguments,
param1 and param2, the first a string, the second an int. I want to
write a script that automates Access and runs this function in my
Access database and passes it values for these parameters. What would
that look like?

I have been trying to use Win32::OLE in a Perl script. This is what I
have so far. I haven't yet tried the argument passing yet:

use strict;
use warnings;
use Win32::OLE;

my $oAccess;
my $oDatabase;

my $filename = "C:\\mydb.accdb";
$oAccess = Win32::OLE->GetActiveObject('Access.Application');

$oAccess->OpenCurrentDatabase($filename);

#$oAccess->{DoCmd}->RunCommand(myfunction());
#$oAccess->{DoCmd}->RunCommand("myfunction()");
$oAccess->{DoCmd}->RunCode('myfunction()');

The commented out lines are some of the things I've tried, but I can't
get my function to run at all.

It's not clear to me from reading the Win32::OLE documentation at CPAN
how to do this. If this is not possible with Win32::OLE, can you tell
me how I might accomplish this?

The function I'm attempting to run exports a somewhat complex Excell
spreadsheet based on queries on my database. The arguments are
variables that I plug into the queries.

Thanks for any help.

Thanks,
John
email Follow the discussionReplies 3 repliesReplies Make a reply

Similar topics

Replies

#1 Access Developer
June 10th, 2011 - 05:26 pm ET | Report spam
Check help and Google/Bing for Command Line Parameters. You can schedule
tasks with Windows but I am not sure how you'd go about passing
parameters... a Shell Script might be what you want, but that is 'way
outside my scope of knowledge (as Perl is).

Larry Linson, Microsoft Office Access MVP
Co-author: "Microsoft Access Small Business Solutions", published by Wiley
Access newsgroup support is alive and well in USENET
comp.databases.ms-access


"beartiger" wrote in message
news:
This question has to do with automating Access. I simply want to run
my own function in Access and pass it arguments. .

So, let's say I have written a public function called foo() in a
module in my Access database. Foo() takes a couple of arguments,
param1 and param2, the first a string, the second an int. I want to
write a script that automates Access and runs this function in my
Access database and passes it values for these parameters. What would
that look like?

I have been trying to use Win32::OLE in a Perl script. This is what I
have so far. I haven't yet tried the argument passing yet:

use strict;
use warnings;
use Win32::OLE;

my $oAccess;
my $oDatabase;

my $filename = "C:\\mydb.accdb";
$oAccess = Win32::OLE->GetActiveObject('Access.Application');

$oAccess->OpenCurrentDatabase($filename);

#$oAccess->{DoCmd}->RunCommand(myfunction());
#$oAccess->{DoCmd}->RunCommand("myfunction()");
$oAccess->{DoCmd}->RunCode('myfunction()');

The commented out lines are some of the things I've tried, but I can't
get my function to run at all.

It's not clear to me from reading the Win32::OLE documentation at CPAN
how to do this. If this is not possible with Win32::OLE, can you tell
me how I might accomplish this?

The function I'm attempting to run exports a somewhat complex Excell
spreadsheet based on queries on my database. The arguments are
variables that I plug into the queries.

Thanks for any help.

Thanks,
John
Replies Reply to this message
#2 John Harrington
June 13th, 2011 - 02:13 pm ET | Report spam
On Jun 10, 2:26 pm, "Access Developer" wrote:
Check help and Google/Bing for Command Line Parameters.  You can schedule
tasks with Windows but I am not sure how you'd go about passing
parameters... a Shell Script might be what you want, but that is 'way
outside my scope of knowledge (as Perl is).



The answer, as it turns out, is to use the Application.Run method,
like:

$oAccess->Run("myfunction","arg")


Best regards,
John
Replies Reply to this message
#3 Access Developer
June 13th, 2011 - 04:01 pm ET | Report spam
I did not understand that he wanted to do this from within an Access
database. Isn't that a requirement for Application.Run?

Larry Linson, Microsoft Office Access MVP
Co-author: "Microsoft Access Small Business Solutions", published by Wiley
Access newsgroup support is alive and well in USENET
comp.databases.ms-access


"John Harrington" wrote in message
news:
On Jun 10, 2:26 pm, "Access Developer" wrote:
Check help and Google/Bing for Command Line Parameters. You can schedule
tasks with Windows but I am not sure how you'd go about passing
parameters... a Shell Script might be what you want, but that is 'way
outside my scope of knowledge (as Perl is).



The answer, as it turns out, is to use the Application.Run method,
like:

$oAccess->Run("myfunction","arg")


Best regards,
John
email Follow the discussion Replies Reply to this message
Help Create a new topicReplies Make a reply
Search Make your own search