主从表很简单的连问题

tongchunbin 2006-10-18 11:14:18


连接两个表,DBGrid1连的是ADO_Query1主表 ,DBGrid2连的是连的是ADO_Query2从表
主表字段 ID 是主键,从表字段 ID 是外键, 主从表一对多关系

ADOquery1.sql 里的内容是:select * from table1
ADOquery2.sql 里的内容是:select * from table2 where ID =: StrID
ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('StrID').Value;

DBGrid1里的记录移动的时候,DBGrid2也跟着显示相关的信息,请问这个该怎么实现?
我知道是在ADO_Query1 ,AfterPost和AfterScroll事件里写,但怎么做都实现不了,哪位大哥帮帮忙,详细点,把完整的代码贴上来,谢谢了
...全文
259 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
GHOSTSEA 2006-10-21
  • 打赏
  • 举报
回复
关注~~~~~
wave_f 2006-10-20
  • 打赏
  • 举报
回复
做个记号,看有没有更好的办法,我的也是这样的情况,不过我的第二个从表用的adotable表,mastersource,masterfields就可以完成了
MAX-长老 2006-10-20
  • 打赏
  • 举报
回复
maxtool 2006-10-20
  • 打赏
  • 举报
回复
偶用的也是adotable表来实现的。
zlb_chen 2006-10-20
  • 打赏
  • 举报
回复
主从表的连接搞得这么复杂,还以为什么难题?
ron_xin 2006-10-19
  • 打赏
  • 举报
回复
这样table1关键字为Single_No 那么table2 也建一个非关键字Single_No

ADOquery1.sql 里的内容是:select * from table1
ADOquery2.sql 里的内容是:select * from table2 where Single=: Single_No
adoquery2.datasource:=Datasource1;

这样就搞定了~~`没你想像的这么麻烦
do2008 2006-10-19
  • 打赏
  • 举报
回复
>>>ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('ID').Value;
>>>StrID不是数据库字段名,是变量来的
>>>我用这种方法做,出现如下错误信息:

>>>ADO_Apply2 : Parameter 'StrID' not found
>>>为什么啊? StrID不是数据库字段名,是变量来的

变量不能直接,写在''之中,要这样

ADOquery2.Parameters.ParamByName(StrID).Value := ADOquery1.FieldByName('ID').Value;

mdejtod 2006-10-19
  • 打赏
  • 举报
回复
哇,我刚要说,楼上的占位了,楼上的,你现在在哪呀??好久都没看到你上网了~~
real_name 2006-10-18
  • 打赏
  • 举报
回复
什么错 ?
tongchunbin 2006-10-18
  • 打赏
  • 举报
回复
更正一下我发的贴,
ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('StrID').Value;

这句应该改为
ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('ID').Value;


do2008 2006-10-18
  • 打赏
  • 举报
回复
主从表的显示

1.如果是用AdoQuery来实现的话,那就在主表的ADO_Query1的AfterScroll事件中,
重新刷新ADO_Query2的数据,或者干脆

ADO_Query2.Close();
ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('StrID').Value;
ADO_Query2.Open();

2.如果没有什么特别的需要,那就用TADOTable来代替ADO_Query2,
设置好TADOTable的MasterSource 、MasterFields

设置这个的方法不用说了吧,大家都知道~~~
budwn 2006-10-18
  • 打赏
  • 举报
回复
ADOquery1.sql 里的内容是:select * from table1
ADOquery2.sql 里的内容是:select * from table2 where ID =: StrID
adoquery2.datasource:=Datasource1;
adoquery1.active:=true;
adoquery2.adotive:=true;
aniugee 2006-10-18
  • 打赏
  • 举报
回复
ADOquery2.FieldByName('ID').value := ADOquery1.FieldByName('StrID').value;

把这句话放到 adoquery1 的 AfterScroll事件里
tongchunbin 2006-10-18
  • 打赏
  • 举报
回复
ADOquery2.Parameters.ParamByName('StrID').Value := ADOquery1.FieldByName('ID').Value;
StrID不是数据库字段名,是变量来的
我用这种方法做,出现如下错误信息:

ADO_Apply2 : Parameter 'StrID' not found
为什么啊? StrID不是数据库字段名,是变量来的

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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