【发布时间】:2018-01-25 13:40:31
【问题描述】:
Locate 将光标移动到与指定的一组搜索条件匹配的第一行。
假设q 是TQuery 组件,它通过TAG 和TAGTEXT 两列连接到数据库。使用下一个代码,我收到信 a。我想使用Locate() 函数来获取字母d。
If q.Locate('TAG','1',[loPartialKey]) Then
begin
tag60 := q.FieldByName('TAGTEXT');
end
例如,如果我有这样的表:
TAG | TAGTEXT
+---+--------+
| 1 | a |
+---+--------+
| 2 | b |
+---+--------+
| 3 | c |
+---+--------+
| 1 | d |
+---+--------+
| 4 | e |
+---+--------+
| 1 | f |
+---+--------+
是否可以在表中找到第二次第一个出现的时间?
编辑
我的工作是找到 TAG 值 1 的出现(我需要的出现取决于我得到的参数),我需要遍历表并从所有 TAGTEXT 字段中获取值,直到找到TAG字段中的值又是数字1。在这种情况下,数字1代表新段的开始,两个数字1之间的所有数字都属于一个段。 每个段中的行数不必相同。此外,我不允许对表格进行任何更改。
我想我可以做的是创建一个计数器变量,每次到达 TAG 时都会增加一,其中的值为 1。当计数器等于代表事件的参数时,我知道我在正确的段中,我将遍历该段并获得我需要的值。
但这可能是一个缓慢的解决方案,我想知道是否有更快的解决方案。
【问题讨论】:
-
为什么不直接从 SQL 查询中执行此操作?
-
也许使用
Filter? -
2 qs: a) 你使用什么数据库后端? TQuery 用于 BDE,它已经过时了二十年。 b)您的表是否包含一列,该列标识属于同一行块的条目,例如段ID?如果没有,您应该添加一个。
-
@nikname 如果您需要找到第 55 次出现,那应该是您问题的一部分。
-
类似于this question。
标签: sql-server delphi delphi-2006 bde