gpt4 book ai didi

delphi - 在数据集过滤器中使用 coalesce()

转载 作者:行者123 更新时间:2023-12-02 07:35:02 26 4
gpt4 key购买 nike

 // lItems is TDataSet or TClientDataSet
with lItems do
begin
Close;
Filtered := false;
Filter := Format('coalesce(%s,0)=%d',[lFieldName,lInteger]); // lInteger is >= 0, lFieldName is hard coded constant string representing a field name
Filtered := true;
Open;

打开语句失败(也带有括号(coalesce(%s,0)=%d))

Field 'coalesce' not found

这是 Delphi Tokyo 在 FireBird 数据库上使用 FireDAC(我预计它在其他数据库类型上也会出错)。

有办法解决这个问题吗?

最佳答案

就我个人而言,我不希望 Coalesce 在 TClientDataset 过滤器中工作。它基本上是一个服务器端例程,一些但不是所有 Sql Server 支持。

TClientDataSet的表达式过滤器使用TExprParser(参见DBCommon.Pas)来支持其类似Sql的过滤器表达式,查看其源代码(参见例程GetSQLToken)不支持Coalesce,至少在 D7 中(这是我这台笔记本电脑上的所有内容)。此外,合并并不在 TCANOperator 枚举中,该枚举有效地定义了 TExprFilter 的语法以及 TClientDataSet 支持的语法。

对此的一个明显的解决方法是在用于检索 CDS 服务器数据的 SQL 表达式中包含对 Coalesce 的调用。

关于delphi - 在数据集过滤器中使用 coalesce(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48519459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com