Steffen Goeldner wrote:

Peter Hircock wrote:



Correct, the problem starts with version 2.77, 2.76 is fine.



Short explanation:


 The execute() method of DBD::ADO 2.77 returns $rows instead of
 $rs->RecordCount (because it seems more reliable).
 The type of $rows is Win32::OLE::Variant, which obviously cannot
 be restored. I guess your client runs on Unix where Win32::OLE
 isn't available. Hmm, but you connect to localhost - how does it
 work at all?

Quick fix:

Change the last line of execute() at ADO.pm (line 1669 in v2.83):

 -              return $rows || '0E0';  # $rs->RecordCount
 +              return $rows->Value || '0E0';  # $rs->RecordCount

Please let me know if this works for you!




I also had to fall back to DBI 1.38 for the 2.73/2.76 versions to work.



What's the problem with DBI 1.39?



Steffen


Quick fix works, DBIProxy is much happier with execute() returning the rows->Value instead of the Win32::OLE::Variant object..
The client will be on a Linux host, but for testing I was running it on a Windows box to see if it was a OS dependent problem.
The scenario is, I have a Windows box with the ODBC/ADO connection to the database ( setup with all the authentication etc. ). I need to run the report on a Linux box,. So to provide the Linux-Windows connection, I run the DBIProxy server on the windows box. Then on the report box I connect via DBIProxy to the ADO connection( ODBC would not handle floating point fields, always returned out of range ).


Thanks, Peter



Reply via email to