Delphi FDQuery 选择没有列名的行

Delphi FDQuery selecting rows without the column name

我在表单上有一些代码可以根据数据库中的列名创建一堆标签

我正在尝试编写另一段代码,使用 FDQuery select 所有记录,然后根据每行中的值创建标签

目前我有以下。

  while not FDQuery1.Eof do
  begin
    while recordCount < colTotal do
    begin
      newLabel := TLabel.Create(Self);
      newLabel.Parent := panel3;
      newLabel.Align := TAlignLayout.Top;
      newLabel.Text := FDQuery1.FieldByName('Torque2').AsString;
      newLabel.Margins.Top := 10;
      newLabel.Margins.Left := 10;
      newLabel.Margins.Right := 10;
      inc(recordCount);
      FDQuery1.Next;
    end;
  end;

我怎样才能使它动态地创建一个包含每一行结果的标签,而不需要像我在这里那样实际输入列名 "torque2"。

例如,在我的表单中,标签将创建如下

row1 
row2 
row3
row4
row5 

因为现在这段代码只是循环一行值

谢谢

而不是基于名称的 FieldByName method you can access tuple values by the Fields 属性 这是一个基于 0 的索引集合 属性.

FireDAC 提供了更有效的数据访问方式。在客户端获取所有元组后,您可以通过这种方式遍历内部数据存储:

var
  S: string;
  Row, Col: Integer;
begin
  for Row := 0 to FDQuery1.Table.Rows.Count - 1 do
    for Col := 0 to FDQuery1.Table.Columns.Count - 1 do
      S := FDQuery1.Table.Rows[Row].GetData(Col);
end;

恕我直言,这更容易阅读,而且还节省了大量时间,因为它不会移动数据集光标。缺点可能是您需要在客户端获取元组。