delphi 如何循环查询结果集并根据列记录计数执行特定代码块

nfzehxib  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(201)

一旦TADOQuery.Open(cte查询)我想遍历结果集,并根据是否只有一条记录具有check_id(50001,50003)来执行一段代码。如果有两条或更多记录具有相同的check_id(50002)来执行不同的代码。
结果集结构示例。
| 行_编号|买方标识|数量|检查标识|
| - -|- -|- -|- -|
| 一个|小千零一|二十五个|小行星50001|
| 一个|小千零一|30个|小行星50002|
| 2个|小行星1000| 10个|小行星50002|
| 一个|小行星10003| 10个|小行星50003|
非常感谢

dz6r00yl

dz6r00yl1#

您可以在SQL查询中使用Group ByCount来获得如下结果。

SQL语句:

SELECT check_id, COUNT(check_id) as check_id_count
FROM my_table
GROUP BY check_id
ORDER BY check_id;

结果:

| 检查标识|检查标识计数|
| - -|- -|
| 小行星50001|一个|
| 小行星50002| 2个|
| 小行星50003|一个|
现在,您可以像这样迭代记录:

Delphi 代码

cte.SQL.Text := 'SELECT check_id, COUNT(check_id) as check_id_count FROM my_table GROUP BY check_id ORDER BY check_id';
cte.Open;

while not cte.Eof do
begin
  case cte.Fields[1].AsInteger of
    1: Foo(cte.Fields[0].AsInteger)
    2: Bar(cte.Fields[0].AsInteger)
    // add more when necessary
  else
    FooBar; // every other count of check_id
  end;
  cte.Next;
end;

相关问题