还是主表和明细表的问题!帮忙呀,我的难题呀! (50分)

  • 主题发起人 主题发起人 winsock
  • 开始时间 开始时间
W

winsock

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的数据库是access!!!!!我用的是aoduquery1.不用table的。设置mastersource、masterField等属性我这个懂一点!

我在dbeit....中显示A表的编号,在dbgrid中显示B的所有明细项,当打开A表的任何一条记录时候,
B中都有记录与之对应!两者通过关键字段连接。代码如下:

with adoquery2 do //连接B表的,
begin
close;
sql.Clear;
sql.Add('select * from A表,B表 where B.字段=A.字段');
open;
end;
可问题是,这样的写法,把A表中此字段所对应的记录,B字段都显示在dbgrid中,这个该怎么办好呢?
而我本来是如:A表中显示的产品编号为001的,在B表中有1,2,3这几条记录和它对应,,
A表中产品编号为002的,在B表中有3,4,5这几条记录与之对应,我现在的问题就是!
在dbgrid把此6条记录都显示出来,而我需要的是当我在dbedit中显示某条产品编号时,
在dbgri中也跟着显示所对应的记录。谢谢拉,各位帮忙!

 
我觉得你说得这样不需要写代码啊,只要设置mastersource、masterField等属性就可以了啊
 
可惜我用的不是table呀。。我用adoquery...所以才有这样的麻烦呀!
 
那你就只有在dbedit的change事件中写代码了?可以在keyPress的时候触发。
这样输完一回车执行查询就可以了。
 
设置B表的SQL属性为'select * from A表,B表 where B.字段=:XXX'
在dbedit的change事件或A表的OnMoveComplete事件中写入
{
adoquery2.close;
adoquery2.Parameters.ParamByName('xxx'):=A表.字段;
adoquery2.open;
}
 
同意lssgj的写法,要求了表中的字段等A表中段的当前值。
 
还是不行的呀。我是在窗体的create中写事件,
所以现在一打开它就执行sql.Add('select * from A表,B表 where B.字段=A.字段');语句
这样在dbgrid中就存在好多条记录,而dbedit中竟为A表的一条记录呀。各位帮忙呀!
 
在a表adoquery的滚动事件重新打开B表不行吗
我在dbeit....中显示A表的编号,在dbgrid中显示B的所有明细项,
当打开A表的任何一条记录时候,B中都有记录与之对应!
两者通过关键字段连接。代码如下:

with adoquery2 do //连接B表的,
begin
close;
sql.Clear;
sql.Add('select * from B表 where B.字段='+a.字段);
open;
end;
 
yanglih!!!在说清楚点好吗?
sql.Add('select * from B表 where B.字段='+a.字段);这句怎么编译不过呀!

 
sql.Add('select * from B表 where B.字段='+a.字段值);
 
还是不行!该怎么办才好!我很着急呀!
 
你把代码贴出来
看看
 
多人接受答案了。
 
后退
顶部