http://www.perlmonks.org?node_id=268653


in reply to Changing a MS-Access report's RecordSource property

For exploration you may want to tey something like :
use Win32::OLE qw(in); # ... my @reports = in $access->{Reports}; printf("Found %d reports\n",scalar(@reports));
This way you can see how many reports are returned, and use them from the array. I have found that some of the office COM objects have odd collections and i end up having to use indexes that don't seem correct to the non-Gatesian mind.
from the frivolous to the serious

Replies are listed 'Best First'.
Re: Re: Changing a MS-Access report's RecordSource property
by Grygonos (Chaplain) on Jun 24, 2003 at 19:58 UTC
    I took what you did with the showing how many reports are there... and bastardized it slowly back to what my original idea was... and somehow it worked this time... here's how it's done.
    #!/Perl/bin/perl use Win32::OLE; my $path = "XXX"; my $access = Win32::OLE->new('Access.Application'); $access->OpenCurrentDatabase($path); #Don't show the window $access->{Visible} = 0; #Open the report in design mode $access->DoCmd->OpenReport("XXX",1); #Change the recordsource $access->Reports->Item(0)->{RecordSource} = "XXX"; #Save the report $access->DoCmd->Save(3,XXX); #Quit $access->DoCmd->Quit(2);
    Thanks to all who offered assistance with this quite sucky problem. Much appreciate guys and gals... thank you.

    sorry about the comment indention... something was lost in the transalation(read:paste) from Textpad :P