如何使用二个adoQury实现Master/Detail表关系,请详细说明最好给出例子.(100分)

  • 主题发起人 主题发起人 lyloyal
  • 开始时间 开始时间
L

lyloyal

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使用二个adoQury实现Master/Detail表关系,请详细说明最好给出例子.
我这样试了从表不起作用:
select * from customer (master)

select * from orders
where custNo=:custNo
(Detail)
但却没有作用,请问错在哪里?
我这样试了从表不起作用:
select * from customer (master)

select * from orders
where custNo=:custNo
(Detail)
但却没有作用,请问错在哪里?
 
我用的是ado+access
 
in design
detail.datasource := DSmaster (datasource of master)
 
to fossil:
我试了不行,能不能具体点? 谢谢!
 
你的sql语句都没有错,只是你没有把数据源设置好
设置从表的datasource为主表的datasource:
databox.ADOQuery2.DataSource:=databox.DataSource1;
然后将主从表用关键字段关联
databox.ADOQuery2.SQL.clear;
databox.adoquery2.sql.Add('select * from 你的从表名 where 关键字1=:关键字1 and 关键字2=:关键字2');
databox.adoquery2.open;
这样就可以实现主从关系,用DBGRID可以看到效果,但这样做在修改主表后不会自动更新从
表的值,我也不知道怎样才可以让它自动更新从表的值。
 
如果野妖风的回答还不能令你满意,我再补充两句:
1要正确设置你的从查询的datasource,指向主表
2要确定主查询中有一个field叫cusNo (最好用field edit 把它显式地加进去)
3打开主查询,打开从查询
4我不知道还要作什摩,应该万事大吉
5发分给我们
 
这样了,大家有没有注意到:
在三层结构中,DataSetProvider的resolvertodata设置为True时,在客户端会出问题。
1.会出现:服务器段的数据表adoquery1.2没有激活。
2.adoquery1.2激活后。客户段的commandtext不能改变。
why
 
1、在从表中,写一个带参数的SQL,但不指定DataSource;
SELECT * FROM DetailTable Where MasterId=:MasterId;
2、在主表的AfterScroll中,给从表单指定参数
QueryDetail['MasterId']:=QueryMaster['MasterId'];
QueryDetail.Active:=False;
QueryDetail.Active:=True;
3、在从表的ONNEWRECORD中,
QueryDetail['MasterId']:=QueryMaster['MasterId'];
这是为新增记录考虑的。
4、以后,您就可以正常对主、从表中运用APPLYUPDATES。



 
后退
顶部