如何在查询中显示多个结果
how to show more than one result on query
我在 MySQL 上有一个 returns 两个结果的程序,我需要在 Delphi 上显示这个,但我没有找到如何通过每个结果。
这是我执行时在 DBForge 上的显示方式,我也希望在 delphi 上显示,在 TTabControl
.[=16= 中显示 Query1
和 Query2
]
如何通过此查询并获取查询名称,例如:Query1
、Query2
?
你没有说明你使用的是什么数据库接口库,比如 FireDAC、Zeos 或其他。
您将发出类似 dbxyz.ExecSQL() 的调用并检查一些结果。
听起来您希望在结果集中取回多条记录。使用 TTabControl,您只需创建一个选项卡列表,如“Result-1”、“Result-2”等,具体取决于您返回的记录数。 (它们是结果,而不是查询。)默认情况下,您可以 select 第一个。
单击另一个选项卡时,使用控件的 TabIndex 属性 到 select 结果集中的相应结果,然后格式化该结果中的数据并以您想要的任何格式显示它重新使用选项卡下方。
您给出的细节太少,以至于无法显示除选项卡控件的 OnChange 处理程序以外的任何代码,该处理程序将使用 TabIndex 属性 来查找所需的结果集。但这是我使用 TTabControl 采取的总体方法。
我用命令解决问题
var
tab: TTabItem;
stringGrid: TStringGrid;
repeat
tab:= TTabItem.Create(nil);
tab.Parent:= tabcontrol1;
tab.Text:= query.Fields.Fields[0].FieldName; //the table name
stringGrid:= TStringGrid.Create(Self);
stringGrid.Parent:= tab;
stringGrid.Align:= TAlignLayout.Client;
for I := 1 to query.FieldCount-1 do
begin
stringGrid.AddObject(TStringColumn.Create(stringGrid));
stringGrid.Columns[i-1].Header:= query.Fields.Fields[i].FieldName;
query.First;
for j := 0 to query.RecordCount-1 do
begin
stringGrid.cells[i-1, j]:= query.Fields.Fields[i].value;
query.Next;
end;
end;
stringGrid.RowCount:= j;
until not query.openNext;
我在 MySQL 上有一个 returns 两个结果的程序,我需要在 Delphi 上显示这个,但我没有找到如何通过每个结果。
这是我执行时在 DBForge 上的显示方式,我也希望在 delphi 上显示,在 TTabControl
.[=16= 中显示 Query1
和 Query2
]
如何通过此查询并获取查询名称,例如:Query1
、Query2
?
你没有说明你使用的是什么数据库接口库,比如 FireDAC、Zeos 或其他。
您将发出类似 dbxyz.ExecSQL() 的调用并检查一些结果。
听起来您希望在结果集中取回多条记录。使用 TTabControl,您只需创建一个选项卡列表,如“Result-1”、“Result-2”等,具体取决于您返回的记录数。 (它们是结果,而不是查询。)默认情况下,您可以 select 第一个。
单击另一个选项卡时,使用控件的 TabIndex 属性 到 select 结果集中的相应结果,然后格式化该结果中的数据并以您想要的任何格式显示它重新使用选项卡下方。
您给出的细节太少,以至于无法显示除选项卡控件的 OnChange 处理程序以外的任何代码,该处理程序将使用 TabIndex 属性 来查找所需的结果集。但这是我使用 TTabControl 采取的总体方法。
我用命令解决问题
var
tab: TTabItem;
stringGrid: TStringGrid;
repeat
tab:= TTabItem.Create(nil);
tab.Parent:= tabcontrol1;
tab.Text:= query.Fields.Fields[0].FieldName; //the table name
stringGrid:= TStringGrid.Create(Self);
stringGrid.Parent:= tab;
stringGrid.Align:= TAlignLayout.Client;
for I := 1 to query.FieldCount-1 do
begin
stringGrid.AddObject(TStringColumn.Create(stringGrid));
stringGrid.Columns[i-1].Header:= query.Fields.Fields[i].FieldName;
query.First;
for j := 0 to query.RecordCount-1 do
begin
stringGrid.cells[i-1, j]:= query.Fields.Fields[i].value;
query.Next;
end;
end;
stringGrid.RowCount:= j;
until not query.openNext;