[Bug 5754] New: oleaut32: MS Dao 3.5 fails to evalutate "SELECT <CurrencyField> - <Currencyield> FROM ..." sql

Wine Bugs wine-bugs at winehq.org
Tue Jul 25 04:57:27 CDT 2006


http://bugs.winehq.org/show_bug.cgi?id=5754

           Summary: oleaut32: MS Dao 3.5 fails to evalutate "SELECT
                    <CurrencyField> - <Currencyield> FROM ..." sql
           Product: Wine
           Version: 0.9.17.
          Platform: Other
        OS/Version: other
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: wine-ole
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: paolo.salvan at xvision.it


Using DAO 3.5 (the engine for MS Access 97 databases) and Wine 0.9.17
I've got a trouble:

when I launch a query that does a subtraction between two currency field
(ie: "SELECT InvoiceTotal - Taxes AS Revenue FROM ...."

the query fails, lamenting some incorrect types...

The console log says:
----
fixme:variant:VarSub can't expand vt 6 vs 6 to a target type.
----
Replacing the builtin OLEAUT32.DLL with the native DLL everything works
ok.

The attached minimal project reproduce the problem; before starting it, install
standard Dao 3.5 setup from MS or install
http://download.danea.it/demo/def2006demo09b.exe (that is my SW, it install a
minimal Dao3.5)

BTW, this is the minimal bit of Delphi code to reproduce the problem:

procedure TForm1.Button2Click(Sender: TObject);
var
    daodbeng: DAODBEngine;
    daodb: DAODatabase;
    daors: DAORecordset;
    iType: integer;
begin
    try
        daodbeng:= OpDAO35.CreateEngine;
        daodb:= daodbeng.OpenDatabase(ChangeFileExt(Application.ExeName,
'.mdb'), false, false, '');
        // Note: TotDoc and TotNetto are CURRENCY fields
        daors:= daodb.OpenRecordset('SELECT TotDoc - TotNetto AS Iva FROM
TDocTestate', dbOpenDynaset, _, _);

        // Under windows, it shows "5", under Wine "0"
        // log: fixme:variant:VarSub can't expand vt 6 vs 6 to a target type.
        iType:= daors.Fields[0]._Type;
        if iType = 5 then
            showmessage('OK')
        else
            showmessage('Wrong type: ' + inttostr(iType));

        daors.Free;
        daodb.Free;
        daodbeng.Free;
    except
        on e: Exception do
            ShowMessage('Exception: ' + e.ClassName + '; Msg: ' + e.Message);
    end;
end;

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list