Interbase时间戳列的查询参数不支持FireDAC转换。

问题描述 投票:1回答:1

我在打开一个使用时间戳参数到interbase表的查询时遇到了问题。 在检查了stackoverflow并实现了MapRules的转换映射后,我在打开查询时得到了 "不支持转换 "的结果。

任何帮助都深表感谢,谢谢!

下面是设置参数的代码。

    with FDQuery1 do
    begin
      Close;
      FDQuery1.FormatOptions.OwnMapRules := True;
      with FormatOptions.MapRules.Add do
      begin
        SourceDataType := dtDateTime;
        TargetDataType := dtDateTimeStamp;
      end;
      FDQuery1.Params.ParamByName('BalanceDate').AsDateTime := StrToDateTime('10/03/2017');
      FDQuery1.ParamByName('User').AsInteger := 1;
      FDQuery1.OpenOrExecute;
    end;

这是查询的内容

SELECT
 AC.ACCOUNT_ID,
 AC.ACCOUNT_NAME,
 ACT.ACCOUNT_TYPE_NAME,
 (Select Sum(P1.TOTAL_VAL) From PMNTDOCTRANS P1, DAYBATCH D1 Where
  (P1.ACCOUNT_ID=AC.ACCOUNT_ID)
  And (D1.DAY_BATCH_ID=P1.DAY_BATCH_ID)
  And (D1.DAY_BATCH_DATE <= :BalanceDate)
  And (D1.DAY_BATCH_STORE in (Select Id From ExtUserList Where List_Id=9 and User_Id =:User))
 ) As Val1,
 (Select Sum(P2.TOTAL_VAL) From PMNTDOCTRANS P2, DAYBATCH D2 Where
  (P2.OPOSIT_ACCOUNT=AC.ACCOUNT_ID)
  And (D2.DAY_BATCH_ID=P2.DAY_BATCH_ID)
  And (D2.DAY_BATCH_DATE <= :BalanceDate)
  And (D2.DAY_BATCH_STORE in (Select Id From ExtUserList Where List_Id=9 and User_Id =:User))
 ) As Val2
FROM
 ACCOUNT AC ,
 ACCOUNTTYPE ACT
WHERE
 (ACT.ACCOUNT_TYPE_ID = AC.ACCOUNT_TYPE_ID)
 And
 (AC.ACCOUNT_TYPE_ID in (Select Id From ExtUserList Where List_Id=3 and User_Id =:User))
ORDER BY ACCOUNT_TYPE_NAME
delphi firedac interbase
1个回答
0
投票

这个问题是这样解决的

FDQuery1.Params.ParamByName('BalanceDate').Value:= StrToDateTime('10/03/2017');
© www.soinside.com 2019 - 2024. All rights reserved.