首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何控制TQuery中字段的顺序

如何控制TQuery中字段的顺序
EN

Stack Overflow用户
提问于 2011-06-06 07:24:56
回答 2查看 1.2K关注 0票数 1

我正在使用德尔菲7. TQuery连接到火鸟数据库。

表T1有3个字段(A、B和C)。

为了查询该表,我编写了以下代码:

代码语言:javascript
复制
MyQuery.SQL.Clear;
MyQuery.SQL.Add('SELECT B, C, A FROM T1'); // because that's the order I want them
MyQuery.Open;

但是,当使用FieldNames填充字符串网格的顶部行时(通过迭代Fields[]数组),我不希望依赖静态字段名来进行列映射,但我的问题是,Fields[]数组中字段的顺序与我使用的字段的顺序不匹配。

编辑

我在运行时使用一个例程来处理具有不同SQL的多个报告。我根本不想依赖FieldNames,所以我需要使TQuery.Fields数组按照TQuery.SQL中出现的字段的顺序排序(在运行时)。

我的问题是:如何控制MyQuery.Fields[]中字段的顺序,使其与我在SQL中使用的顺序相匹配?有没有更好的选择,我应该试试?

编辑

抱歉,最后只是个愚蠢的错误。一个太多的SQL.Clear

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-06 07:35:18

首先,这是:

代码语言:javascript
复制
MyQuery.SQL.Add('SELECT B, C, A FROM T1');

应:

代码语言:javascript
复制
MyQuery.SQL.Text := 'SELECT B, C, A FROM T1';

或者:

代码语言:javascript
复制
MyQuery.SQL.Clear;
MyQuery.SQL.Add('SELECT B, C, A FROM T1');

因为仅Add()就向MyQuery.SQL中的现有查询附加了一些内容。在这种情况下,行为将是提供者依赖的。对于某些提供程序,只需执行第一个查询,而忽略其他查询,而对于其他提供程序,则会出现错误。不管怎么说都是错的。

如果这仍然不能修复它,你在说什么Query,什么类型的数据库和什么样的网格?这种行为可能是依赖于数据库的,也可能是依赖于网格的;不管它的价值如何,我从来没有见过这种情况发生,我总是按照SQL顺序得到列。但我主要是使用火鸟,MsSQL,一个小小的甲骨文。

票数 3
EN

Stack Overflow用户

发布于 2011-06-06 09:00:57

DataSet的字段集合项可以在“字段编辑器”中重新排列,您可以从鼠标右键单击TQuery组件上的菜单访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6248900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档