主从关系中的从表TADOQuery ,不能够通过datasource给其SQL中的动态参数赋值.主从关系字段设置反复检查过应该没问题,但在主表从一个记录转到另一个记录时,总是提示"对象关闭时,不允许操作",设置中断查看主从表都是open的,网上查了很多办法都不行,但换成TADODATASET就可以用,哪位高手知道怎么回事啊?

解决方案 »

  1.   

    我用Northwind.mdb(北风贸易数据库)给你举个例子:主表:订单  ---- ADOQuery1(DataSource1)
    Select-SQL ---- SELECT 订单.订单ID, 订单.订购日期, 订单.发货日期, 订单.运货商, 订单.货主名称, 订单.货主城市 FROM 订单子表:订单明细  ---- ADOQuery2(DataSource2)
    Select-SQL ----SELECT 订单明细.* FROM 订单明细  WHERE 订单明细.订单ID= :订单ID注意:Where 后面的条件,后一个“订单ID”是指订单表中的对应字段,且左边必须加冒号,中间不能有空格。
     
    这样就行了,试试吧。
      

  2.   

    不好意思,忘了还应将 ADOQuery2的DataSource属性设置为 DataSource1 。 至此就全部完成了,当主表ADOQuery1的记录指针移动时,子表ADOQuery2的记录也会相应变化。
      

  3.   

    楼主:到http://dl.dbank.com/c0ch2ueha4下载我的例子吧。
      

  4.   

    2楼的例子试过了没问题,我的设置也是一样的,唯一不同的是我用的SQL SERVER数据库,还是老问题,要么主表记录移动时从表不动,如果在afterscroll事件中强制从表open,就会显示"对象关闭时,不允许操作",怀疑是不是SQL SERVER数据表设置有问题
      

  5.   

    我把2楼的代码及数据导入SQL SERVER环境一执行,问题是一样的,大家可以试一下,真是邪门了
      

  6.   


    你把sql server数据库文件分离后,压缩一下,传一份给我,我来看看。mailto: [email protected] 
      

  7.   

    找到原因了,因为数据库中有2数据库,所以从表SQL中用了use 数据库 子句,去掉这句就好了,谢谢大家