gpt4 book ai didi

delphi - TQuery中如何控制字段的顺序

转载 作者:行者123 更新时间:2023-12-03 19:20:30 25 4
gpt4 key购买 nike

我正在使用 Delphi 7。TQuery连接到火鸟数据库。

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

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

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 中的字段顺序不匹配。

编辑

我在运行时对具有不同 SQL 的多个报告使用一个例程。我不想依赖 FieldNames完全没有,所以我需要制作 TQuery.FieldsTQuery.SQL 中 SQL 中出现的字段顺序排序的数组(在运行时)。

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

编辑

对不起,最后只是一个愚蠢的错误。一个太多了 SQL.Clear !

最佳答案

首先,这个:

MyQuery.SQL.Add('SELECT B, C, A FROM T1');

应该:
MyQuery.SQL.Text := 'SELECT B, C, A FROM T1';

或者:
MyQuery.SQL.Clear;
MyQuery.SQL.Add('SELECT B, C, A FROM T1');

因为 Add()单独将某些内容附加到 MyQuery.SQL 中的现有查询.在这种情况下,行为将取决于提供者。对于某些提供程序,您只需执行第一个查询而忽略其他查询,而对于其他提供程序,您会收到错误。无论哪种方式都是错误的。

如果仍然不能解决问题, Query你在说,什么样的数据库和什么样的网格?行为可能依赖于数据库或依赖于网格;对于它的值(value),我以前从未见过它发生过,我总是按 SQL 顺序排列列。但我主要使用 Firebird、MsSQL 和一点 Oracle。

关于delphi - TQuery中如何控制字段的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6248900/

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