我在从程序用户在运行时定义的查询中获取字段列表时遇到问题。我让我的用户将 SQL 查询输入到备忘录控件中,然后我想让他们遍历将返回的字段并执行诸如格式化输出、汇总列值等操作。所以,我必须获取列名,以便他们有一个输入附加信息的地方。
如果没有参数我会做得很好,但我也必须让他们为查询定义过滤器参数。所以,如果我想将参数设置为null,我必须知道参数的数据类型是什么。
我使用的是 Delphi 2006。我使用 DBExpress 组件 TSQLConnection 和 TSQLQuery 连接到 Firebird 2.1 数据库。以前,我成功使用:
for i := 0 to Qry.Params.Count - 1 do Qry.Params[i].value := varNull;
当我尝试使用日期参数时,我发现我遇到了问题。直到那时我的所有参数都是整数(记录 ID)只是一个巧合。事实证明 varNull 只是一个值为 1 的枚举常量,所以我得到了可接受的结果(没有记录)工作正常。
我只需要一个字段列表。也许我应该只解析 SQL 语句的 SELECT 子句。我认为将 Qry.Prepared 设置为 True 会给我一个字段列表,但没有这样的运气。它需要参数的值。
如果你有想法,我肯定很想听听。谢谢你的帮助。