我将 Delphi XE2 与 AnyDac Components 和 Advantage Database 10 一起使用。在我的代码中,我使用如下参数化查询:
q.SQL.Text := 'SELECT * FROM Table1 ' +
'LEFT JOIN Table2 ON (Table1.ID = Table1 .ID_Table2) ' +
'WHERE ' +
':0 BETWEEN Table1.StartAm AND Table1.EndeAm ' +
'AND Table2 = :1';
q.Params[0].Value := AStartDateTime;
q.Params[1].Value := AIDRessourcenGruppe;
q.Open;
这最终导致异常:
异常 der Klasse EADSNativeException mit der Meldung '[AnyDAC][Phys][ADS] 错误 7200:AQE 错误:状态 = 22018;
本机错误 = 2112; [iAnywhere 解决方案][Advantage SQL 引擎]分配错误'aufgetreten。
当然 AStartDateTime 是一个有效的 delphi TDateTime 值,AIDRessourcenGruppe 是一个整数值。
有趣的是,这两种变体有效:
q.SQL.Text := 'SELECT * FROM Table1 ' +
'LEFT JOIN Table2 ON (Table1.ID = Table1 .ID_Table2) ' +
'WHERE ' +
':0 BETWEEN Table1.StartAm AND Table1.EndeAm ' +
'AND Table2 = :1';
q.Params[0].AsDateTime:= AStartDateTime;
q.Params[1].AsInteger:= AIDRessourcenGruppe;
q.Open;
-
q.SQL.Text := 'SELECT * FROM Table1 ' +
'LEFT JOIN Table2 ON (Table1.ID = Table1 .ID_Table2) ' +
'WHERE ' +
':SomeDate BETWEEN Table1.StartAm AND Table1.EndeAm ' +
'AND Table2 = :ID_PT_Ressourcengruppe';
q.ParamByName('SomeDate').Value := AStartDateTime;
q.ParamByName('ID_PT_Ressourcengruppe').Value := AIDRessourcenGruppe;
q.Open;
我错过了什么吗?谢谢你的帮助!