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