郁闷 2个数据表SQL连接问题(50分)

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

wohoot

Unregistered / Unconfirmed
GUEST, unregistred user!
我上个问题是通过SQL连接2个表的问题,调试成功,但我保存关闭再打开就提示有错误,请大家帮忙分析分析?
原问题:
DBgrid1只显示了一个表的一个字段A,DBgrid2显示另外一个表的全部记录,2表有相同记录的字段B,现在要求DBgrid2中的记录随着DBgrid1中点击的记录而变化,请问代码要怎么样写?不要在2表中建立Field link.
答案:
ADOQuery1 SQL select A from 表1
DataSource1 DataSet ADOQuery1
DBGRIDEH1 DataSource DataSource1
ADOQuery2 SQL select * from 表2 where A=:B
DataSource DataSource1
DataSource2 DataSet ADOQuery2
DBGRIDEH2 DataSource DataSource2
我现在再调试出现提示:query1.field 'B' not found
郁闷,我先天第一次调试成功,第二次就不行了,我通过直接改表2的字段B改成A名也不行啊
 
先将Field列表清除
 
ADOQuery1 SQL select A from 表1
DataSource1 DataSet ADOQuery1
DBGRIDEH1 DataSource DataSource1
ADOQuery2 SQL select * from 表2 where B=:A
DataSource DataSource1
DataSource2 DataSet ADOQuery2
DBGRIDEH2 DataSource DataSource2
 
上一个问题好像是我解答的,
你出现的原因是 ADOQuery1 中没有的 B 这个字段
如果要像你写的哪样,应改为
ADOQuery1 SQL select A as B from 表1
DataSource1 DataSet ADOQuery1
DBGRIDEH1 DataSource DataSource1
ADOQuery2 SQL select B as A, * from 表2 where A=:B
DataSource DataSource1
DataSource2 DataSet ADOQuery2
DBGRIDEH2 DataSource DataSource2
 
to:爱不到就要输
谢谢你啊,上个问题就是你回答的,我现在就是按你现在告诉我的方法做的,调试有时成功,有时失败,出现那个提示,郁闷啊.
 
你应该在adoquery1的afterscroll事件中编写代码,得到adoquery2的数据集
很简单的,没出现过任何错误的呀
你不妨试一试
 
你说的应该属于主、从表的控制问题啦,可以查看一下这个方面的内容,应该比较多的解决方式的,给你贴一个
你可以看看李维的《分布式多层应用系统篇》2-35页的使用巢状数据表
实现Master/Detail的应用系统

在appserver中分别放置一个主表的dataset和一个从表的dataset,一个datasource,一个
datasetprovidor
将datasource连接到主表的dataset,从表的dataset连接到datasource,
datasetprovidor连接到主表的dataset,
在从表的dataset中的MasterField属性中建立主从表的关联

在client中将主表和从表的clientdataset的ProvidorName都设为同一个datasetprovidor,
用主表clientdataset的Fields Editor加入所有字段(其中包括了从表关联字段)
在从表的clientdataset的DataField属性中将能出现主从表关联的选项

用Applyupdate更新数据时,只需调用主表的clientdataset的Applyupdate方法就可以
实现主从表的同步更新了。
;)
 
同步更新不是很好,当然只有主从两个表还是可以的。
你出现的就只是找不到关键字段。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
618
import
I
后退
顶部