Peter Hircock wrote:Quick fix works, DBIProxy is much happier with execute() returning the rows->Value instead of the Win32::OLE::Variant object..
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
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