John W Wilson wrote:
>
> I'm trying to return recordsets from predefined parameterised queries in MS
> Access. I've read all the posts, checked my code, but try as I might I can't
> get a
> parameter query to return me a recordset. What am I doing wrong?
>
> The following code fails with "Can't call method "EOF" on an undefined value"
> -
> on the marked line. In other words the recordset has not been created.
>
>
> John Wilson
>
> Youth would be an ideal state if it came a little later in life.
> ~Herbert Henry Asquith
>
> #------------------------------------------------------------------
> use Win32::OLE;
>
> $Conn = Win32::OLE->new( "ADODB.Connection");
> $cm = Win32::OLE->new( "ADODB.Command");
> $RS = Win32::OLE->new( "ADODB.RecordSet");
Start by checking the results of these calls, eg:
my $RS = Win32::OLE->new("ADODB.RecordSet") or
die "new ADODB.Recordset: " . Win32::OLE->LastError();
> $Conn->Open('Northwind'); # or die "Cannot connect";
>
> $qryCity = 'seattle';
>
>
> # stored proc text :
> # PARAMETERS pCity Text ( 255 );
> # SELECT *
> # FROM employees
> # WHERE city = pCity;
>
> $cm->{ActiveConnection} = $Conn;
> $cm->{CommandType} = adCmdStoredProc;
> $cm->{CommandText} = 'spEmployeeInCity';
> $cm->Parameters->Append($cm->CreateParameter('pCity', adChar, adParamInput,
> 25, $qryCity));
>
> # V---------- fails on this line ----------------------
> $RS = $cm->Execute();
>
> while(!$RS->EOF) {
> $lastname = $RS->Fields('LastName')->Value;
> $firstname = $RS->Fields('FirstName')->Value;
> print "$lastname, $firstname\n" ; # print them out
> $RS->MoveNext();
> }
> $cm-Close;
> $RS->Close;
> $Conn->Close;
--
,-/- __ _ _ $Bill Luebkert Mailto:[EMAIL PROTECTED]
(_/ / ) // // DBE Collectibles Mailto:[EMAIL PROTECTED]
/ ) /--< o // // Castle of Medieval Myth & Magic http://www.todbe.com/
-/-' /___/_<_</_</_ http://dbecoll.tripod.com/ (My Perl/Lakers stuff)
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs