1 delphi sqlite firemonkey firedac
我在表单上有一些代码,它从数据库中的列名创建一堆标签
我正在尝试编写另一段代码,使用FDQuery选择所有记录,然后根据每行中的值创建标签
目前我有以下内容.
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;
Run Code Online (Sandbox Code Playgroud)
我如何能够动态地创建一个带有每行结果的标签,而不需要像我这里那样实际放置像"torque2"这样的列名.
因此,例如在我的表单上,标签将创建如下
row1
row2
row3
row4
row5
Run Code Online (Sandbox Code Playgroud)
因为现在这段代码只是简单地循环一行值
谢谢
您可以通过Fields属性访问元组值,而不是基于名称的FieldByName方法,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;
Run Code Online (Sandbox Code Playgroud)
这是恕我直言更容易阅读,也节省了相当多的时间,因为它不移动数据集光标.缺点可能是您需要在客户端获取元组.