首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从DBExpress TSQLQuery获取字段列表

从DBExpress TSQLQuery获取字段列表
EN

Stack Overflow用户
提问于 2008-11-03 17:15:39
回答 6查看 5K关注 0票数 4

我在从程序用户在运行时定义的查询中获取字段列表时遇到问题。我让我的用户在memo控件中输入SQL查询,然后我想让他们遍历将返回的字段,并执行格式化输出、求和列值等操作。因此,我必须获取列名,以便它们有位置输入附加信息。

如果没有参数,我会做得很好,但我还必须让它们为查询定义过滤器参数。因此,如果我想将参数设置为null,我必须知道参数的数据类型是什么。

我使用的是Delphi 2006。我使用DBExpress组件TSQLConnection和TSQLQuery连接到Firebird 2.1数据库。在此之前,我成功地使用了:

for I := 0 to Qry.Params.Count -1 do Qry.Paramsi.value := varNull;

当我尝试使用日期参数时,我发现我有一个问题。在此之前,我的所有参数都是整数(记录ID),这只是个巧合。事实证明,varNull只是一个值为1的枚举常量,所以我得到的结果是可接受的(没有记录)工作正常。

我只需要一份字段列表。也许我应该只解析SQL语句的SELECT子句。我以为将Qry.Prepared设置为True会得到一个字段列表,但没有这么幸运。它需要参数的值。

如果你有什么想法,我很想听听。谢谢你的帮助。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-11-05 06:43:16

再次回答:“因为我很感兴趣。我的方法(对我的查询)是有效的,因为它们已经预定义了params的数据类型,预设为正确的类型:)

我不确定您希望查询如何知道或派生参数的数据类型,因为您甚至没有选择它所操作的字段。

所以我认为你的查询设置和用户输入方法需要更多的关注。我刚刚查了一下我之前是怎么做到的。我不使用参数化查询-我只是从用户那里获得“参数值”,并将它们直接放入SQL中。因此,您的sql将显示为:

选择s.hEmployee、e.sLastName

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   FROM PR\_Paystub s
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   INNER JOIN PR\_Employee e ON e.hKey = s.hEmployee
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   WHERE s.dtPaydate > '01/01/2008'

因此,不需要参数类型知识。不会阻止您的用户输入垃圾,但这会返回到输入控制:)

票数 2
EN

Stack Overflow用户

发布于 2008-11-04 02:01:31

尽管数据集类型略有不同,但这是我在TClientDataset中使用的简单而有效的数据集类型:)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i := 0 to FilterDataSet.Params.Count -1 do  
begin  
 Case FilterDataSet.Params.Items[i].Datatype of  
    ftString:  
    ftSmallint, ftInteger, ftWord:  
    ftFloat, ftCurrency, ftBCD:  
    ftDate:  
    ftTime:  
    ftDateTime:  
    .  
    .  
    . 
end;   

结束;

您可以不对查询执行类似的操作吗?

票数 2
EN

Stack Overflow用户

发布于 2008-11-04 05:19:17

你们让这个way变得太难了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i := 0 to Qry.Params.Count - 1 do begin
    Qry.Params[i].Clear;
    Qry.Params[i].Bound := True;
end;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/260521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文