我有2个dbgrid连接到两个不同的SQL数据库。一个是“提供者”表,其中coloumns是(provider_name,provider_adress),其他表是customer表(customer_name,customer_adress,provider_name)。更多客户可以属于一个提供商。公共字段是提供者的名称。
我的问题是......我想列出供应商的客户名称。如果我在dbgrid中单击随机的“provider_name”,则客户表dbgrid将处于活动状态,并将显示customer_names,adresses等。)我使用AdoDatasets和AdoQueries。
Select * from customer_name, customer_adress --(in customer table)
where provider name = 'xy' --(in provider table)
任何人都可以帮助查询?任何人都可以帮助我,我该怎么做?感谢您的答案!
答案 0 :(得分:2)
对customer表使用单独的查询,使用类似这样的SQL(将CustQuery
替换为您自己的ADOQuery组件的名称,当然还有实际表信息的表和列名称):< / p>
CustQuery.SQL.Text := 'SELECT c.customer_name, c.customer_address' + #13 +
'FROM customer c' + #13 +
'WHERE c.provider_name = :provider';
在提供程序查询的AfterScroll
事件处理程序中,使用类似这样的代码(通过双击Object Inspector Events选项卡中的AfterScroll
事件生成它):
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;
无论用户是单击提供者网格中的新行还是使用键盘滚动行,上述操作都将起作用。