一个简单的问题:如何用ADO制作主从表关联的表单?

mjer_pan 2003-08-26 08:33:54
我用ACCESS建立了数据库,现在想在表单中实现,查询主表中的记录,在显示该记录的同时,显示从表中相关的数据。
请问应该如何实现?
是不是要用ADOQuery1?然后再与ADOTable2建立关联?
具体步骤如何?
...全文
45 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
FenixMeng 2003-08-28
  • 打赏
  • 举报
回复
加入一个DataSource1,DataSource1->DataSet=ADOQuery1;
ADOTable1->MasterSource=DataSource1;
ADOTable1->MasterField="";//主从表的关联字段,
在运行程序时,先ADOQuery1->Open();然后再ADOTable1->Open();
这样只要选择ADOQuery1中的数据,ADOTable1中就会显示和ADOQuery1中选择的数据相关联的所有数据。
zzhong2 2003-08-27
  • 打赏
  • 举报
回复
一种方法:
主表:(ADOQuery1),从表:(ADOQuery2),主表的'工程编号'与从表的'所属工程'是关联字段
ADOQuery1->Connection=ADOConnection1;
ADOQuery1->SQL->Text="select 工程编号,工程名称 from project";
DataSource1->DataSet=ADOQuery1;

从表:(ADOQuery2)
在ADOQuery2的Parameters中建立一个Parameter,其Name为"工程编号",其DataType为所属

工程字段的字段类型,其Value=ADOQuery1中工程编号字段的随便一个值,当ADOQuery2->A

ctive由false变到true时,其Value自动随ADOQuery1中当前行的工程编号字段值变化。
ADOQuery2->Connection=ADOConnection1;
ADOQuery2->DataSource=DataSource1;
ADOQuery2->SQL->Text="select * from subproject where 所属工程=:工程编号";
当主表(ADOQuery1)当前记录改变时从表会自动跟着变化

另一种方法:
DataSource1->DataSet=ADOQuery1;
在DataSource1的OnDataChange事件中根据ADOQuery1的当前记录的'工程编号'值改变ADOQu

ery2->SQL,然后对从表(ADOQuery2)进行Close()、Open()或Requery()操作.

AnsiString id;
id=ADOQuery1->FieldByName("工程编号")->AsString;
ADOQuery2->SQL->Text="select * from subproject where 所属工程='"+id+"'";
nightfallrove 2003-08-27
  • 打赏
  • 举报
回复
同意楼上用SQL实现主细表。。。
可以设置细表ADOQUERY的Datasurce为主表的Datasurce
这时细表的SQL的参数名与主表的字段名要一至,,
hong668 2003-08-27
  • 打赏
  • 举报
回复
没有千遍一律的做法,不一定按书上说的,
你也可以用两个ADOQUERY,第二个ADOQUERY的where条件就为第一个的ADOQUERY的值
yydy 2003-08-27
  • 打赏
  • 举报
回复
C++ Builder4 彻底研究上有例子
很多书上都有例子
建议看看

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧