Automating Access: running your own functions/passing arguments

B

beartiger

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
 
A

Access Developer

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).
 
J

John Harrington

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
 
A

Access Developer

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


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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top