我想打开a库中的a1表和b库中的b1表,并将他们建立一对一关系到一个datasets中,但adoconnect和adoquery中的connect只能选一个数据库,如何办?
我原来用vfp的自由表就可以,因为只要多个表放在同一个目录下就可以了。

解决方案 »

  1.   

    select a.* from [e:\mytxl.mdb].txl a,txl b where a.id=b.id
    在access查询中没有问题
    在vb中执行没有问题
    在delphi 7的connection.execute中执行没有问题
    就是在adoquery,adodataset中执行不可以,看来是delphi的BUG
      

  2.   

    谢谢,高手请进,
    搬个凳子坐着学习ing ……
      

  3.   

    不行吧,因为ADOQUERY,ADODATASET要有一个connect,而这个只是针对一个数据库。对于这种问题我想如fontain() 所说的那样解决.用
    select a.* from [e:\mytxl.mdb].txl a,txl b where a.id=b.id
    connection.execute
      

  4.   

    经过试验,终于找到解决方法:
    在adodataset 或adoquery中可以按如下的方法写查询:
    select b.* from txl as b,txl as a in 'e:\mytxl.mdb' where a.id=b.id and trim(a.txdz)<>''
    注意,另外一个库的表必需写在后面,否则会报错
      

  5.   

    那你adoquery或adodatasets的connectstring如何写
      

  6.   

    to fontain():那你adoquery或adodatasets的connectstring如何写
      

  7.   

    另外一种写法:
    select b.* from txl as b,`e:\mytxl.mdb;pwd=111111`.txl AS a where a.id=b.id and trim(a.txdz)<>''
    调试成功
    注意:,`e:\mytxl.mdb;pwd=111111`的界定符为~下边的那个符号,不是单引号
    pwd=111111为密码
      

  8.   

    connStr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%stxl.mdb;Persist Security Info=False';
       conn.connectionstring:=format(connstr,[extractfilepath(application.exename)]) ;
       conn.open
      

  9.   

    你们误会我的意思了,我是想用一条sql语句来操作两个数据库中的两个表
    但adoquery的connectstring只允许打开一个数据库
      

  10.   

    通过测试, fontain() 的方法可行
    在Delphi5.0,Access2000下通过
      

  11.   

    我也找到了简单的解决办法,将问题交给access来解决。
    在access中建立视图(或者叫查询,不知道你们习惯什么),例如:SELECT a1.*, a2.*
    FROM [db1].a AS a1, [db2].b AS a2;比如这个表叫 view_1 视图建立在db1中或者db2中都可以。然后ado连接那个数据库,选择这个查询表就ok了