如何为AdoQuery指定主数据集 ( 积分: 20 )

  • 主题发起人 主题发起人 publicnews
  • 开始时间 开始时间
P

publicnews

Unregistered / Unconfirmed
GUEST, unregistred user!
AdoTable有MasterSource属性和MasterFields和IndexFields和其它数据集关连
而在AdoQuery中没有找到类似设置, 找到一个DataSource属性也不知道怎么用的
请各位指点
 
AdoTable有MasterSource属性和MasterFields和IndexFields和其它数据集关连
而在AdoQuery中没有找到类似设置, 找到一个DataSource属性也不知道怎么用的
请各位指点
 
只能设定主从表,只能用ADOTable,ADODataSet等了
 
ADOQUERY可以这样能达到你的目的:
例:一表单上有Adoquery1,Adoquery2和Datasource1,Datasource2
将datasource1.dataset:=adoquery1;datasource2.dataset:=adoquery2;
其中:Adoquery1的SQL为 select rq,djhm,jg from table1 //主表
Adoquery2的SQL为 select * from table2 where djhm=:djhm //明细表
主表和明细表由字段djhm关联
那么:你只要设置 Adoquery2的datasource属性为 Datasource1即可
注意点:在关闭的时候先adoquery2.close;后ADOquery1.close;
在Adoquery2.open之前先检查Adoquery1.recordcount>0为佳。
这样就可以不用写什么代码达到效果了。
 
我先试一下,另外请问:
我本来想用AdoTable的,但我需要的数据可能只是数据表中的某几条,如果我用AdoTable连接时自然会打开整个数据表,当数据表中的数据很多时(如十万条)就会效率低下,所以想用这种AdoQuery的方式连接表,当然这是我想的,不知对不对???
 
对,可以的,用ADOQUERY有条件地选出有用的数据与从表建立关系。
上面的方法我用得很多。
 
首先衷心的感谢tgbdlwm
顺便问一下:
我发现指定主数据集后工作方式是主数据集移动进重新查询明细数据,能不能一次查询出来与主数据相关的所有数据而不执行那么多次查询呢
 
“主数据集移动进重新查询明细数据”这个说的不清楚啊?

另外,AdoQuery怎么会是只读的呢,和AdoTable一样可以进行读写操作啊。
 
不好意思打错字了,应该是
主数据集移动后明细数据自动重新查询
 
你如果想实现这样的功能就不要用主从关系了,用以下方式试试
select * from table2 where djhm in (select dmhm from table1)就可以一下把所要的信息全查出来了,至于table1里的查询条件可以自己设定
 
后退
顶部