Delphi选择dbgrid中的行,并在其他dbgrid中显示其他行

Delphi选择dbgrid中的行,并在其他dbgrid中显示其他行,delphi,delphi-7,Delphi,Delphi 7,我有两个dbgrid连接到两个不同的SQL数据库。一个是“provider”表,冒号是(provider\u name,provider\u address),另一个是客户表,冒号是(customer\u name,customer\u address,provider\u name)。多个客户可以属于一个提供商。公共字段是提供者的名称 我的问题是。。。我想列出供应商的客户名称。如果我在dbgrid中单击随机的“提供者名称”,则customer表dbgrid将处于活动状态,并将显示客户名称、地址

我有两个dbgrid连接到两个不同的SQL数据库。一个是“provider”表,冒号是(provider\u name,provider\u address),另一个是客户表,冒号是(customer\u name,customer\u address,provider\u name)。多个客户可以属于一个提供商。公共字段是提供者的名称

我的问题是。。。我想列出供应商的客户名称。如果我在dbgrid中单击随机的“提供者名称”,则customer表dbgrid将处于活动状态,并将显示客户名称、地址等。我使用ADODataset和ADOQuery

从客户名称、客户地址--(在客户表中)中选择*
其中提供程序名称='xy'-(在提供程序表中)

任何人都可以在查询中提供帮助?有人能帮我怎么做吗?谢谢你的回答

对您的客户表使用单独的查询,使用类似以下的SQL(当然,将
CustQuery
替换为您自己的ADOQuery组件的名称,并将表和列名替换为实际的表信息):

在提供者查询的
AfterScroll
事件处理程序中,使用类似这样的代码(通过双击对象检查器事件选项卡中的
AfterScroll
事件生成):


无论用户是单击提供者网格中的新行,还是使用键盘滚动行,上述操作都会起作用。

这听起来像是一个常见的主-详细视图。
CustQuery.SQL.Text := 'SELECT c.customer_name, c.customer_address' + #13 +
                      'FROM customer c' + #13 +
                      'WHERE c.provider_name = :provider';
procedure TForm1.ProviderQueryAfterScroll(DataSet: TDataSet);
begin
  CustQuery.DisableControls;
  try
    CustQuery.Close;
    CustQuery.Paramseters.ParamByName('provider').Value :=
      ProviderQuery.FieldByname('Provider_Name').Value;
    CustQuery.Open;
  finally
    CustQuery.EnableControls;
  end;
  CustQuery.Open;
end;