【问题标题】:how to show more than one result on query如何在查询中显示多个结果
【发布时间】:2021-04-23 10:44:43
【问题描述】:

我在 MySQL 上有一个返回两个结果的过程,我需要在 Delphi 上显示它,但我没有找到如何传递每个结果。

这是我执行时 DBForge 上的显示方式,我也想在 delphi 上显示,在 TTabControl 中显示 Query1Query2

如何通过此查询并获取查询的名称,例如:Query1,Query2

【问题讨论】:

  • 您的意思是两个结果集?您正在使用哪些数据集组件?
  • 如果 SP 产生 2 个结果集,则将结果集的集合返回给程序。对其进行迭代(也许存在诸如 output.NextRowset 之类的方法?)。
  • 在 FIreDAC 中,用于迭代结果集的方法是 NextRecordSet 方法。见stackoverflow.com/q/58641661/2663863docwiki.embarcadero.com/RADStudio/Sydney/en/…
  • 您能否编辑您的问题并添加一个生成两个结果集的非常简单的过程示例?不需要是您使用的实际程序,只需一个简单的,我们可以尝试了解您的问题。显示过程和所需的表结构。
  • 查询没有名称。 DBForge 只是为结果集分配顺序名称。您无法获取查询名称,因为它们不存在。

标签: mysql delphi firemonkey


【解决方案1】:

你没有说你正在使用什么 DB 接口库,比如 FireDAC、Zeos 或其他东西。

您将发出类似 dbxyz.ExecSQL() 调用并检查一些结果。

听起来您希望在结果集中取回多条记录。使用 TTabControl,您只需创建一个选项卡列表,如“Result-1”、“Result-2”等,具体取决于您返回的记录数。 (它们是结果,而不是查询。)您可以默认选择第一个。

当单击另一个选项卡时,使用控件的 TabIndex 属性从结果集中选择相应的结果,然后格式化该结果中的数据并以选项卡下方的任何格式显示。

您提供的细节太少了,不可能显示除选项卡控件的 OnChange 处理程序之外的任何代码,该处理程序将使用 TabIndex 属性来查找所需的结果集。但这是我使用 TTabControl 的总体方法。

【讨论】:

    【解决方案2】:

    我用命令解决问题

     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;
    

    【讨论】:

    • SO 的问答应该是为了未来读者的利益,我认为您的回答可能对他们帮助不大,因为它不包括 repeatuntil.
    • 实际上,我的问题是关于查询的多个结果,这段代码是关键,我的评论在哪里你可以添加任何你想对结果做的事情
    猜你喜欢
    • 2013-04-08
    • 2013-09-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多