用一个ADOQuery能同时查询两个Access数据库中的两张表吗?两张表通过一个字段相连

解决方案 »

  1.   

    当然能啊。sql语句支持多表查询的。比如你要显示两表中的所有数据可以这样:select * from table1,table2 where table1.姓名=table2.姓名
      

  2.   

    可以,不过烦琐很多,你要是不写语句的话,放两个adoconnection和adoquery,在加一个DATASOURCE,把其中一个作为查询条件,另一个ADOQUERY里的SQL这样写
    SELECT * FROM TABLE WHERE 字段=:字段
    注意的是这只能是显示一个表的,不过是取另一个数据库中有关联的数据但显示还是显示一个数据库中的表,如果是两个都显示,你就要用三个ADOQUERY,其他两个专门取数据,在用计算填充第三个表,
      

  3.   

    SELECT *
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="D:\delphi实验\Createkey\data\keydata.mdb";User ID=Admin;Password=')...keydb 
    KEYDB是KEYDATA.MDB中的表
    你可以照着上面写就是了
      

  4.   

    SELECT a.*,b.*
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="D:\delphi实验\Createkey\data\keydata.mdb";User ID=Admin;Password=')...keydb b,
     OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="D:\delphi实验\Createkey\data\keydb.mdb";User ID=Admin;Password=')...keytb a
    where a.date=b.date
    换成你的表就可以了
      

  5.   

    这个!怎么还搞到用两个库了啊!支持 ziqing(delphi转.net中) 的办法!不过两个库是很少用的,不建议在程序设计的时候把数据库分成两个
      

  6.   

    TO ziqing(delphi转.net中):
      非常感谢!可第一次使用还是有些不大明白,你看看我下面写的有什么问题?谢了!with DataModule1.ADOQuery do
      begin
        SQL.Clear;
        SQL.Add('Select products.商品名称,products.商品别名,products.生产批号,products.商品规格,products.供应商1,products.生产厂商,products.批准文号,products.有效期,products.商品分类,products.计量单位,');
        SQL.Add('checkresult.* From OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'', ''Data Source="aa.mdb";User ID=Admin;Password='')...keydb products,');
        SQL.Add('OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source="db1.mdb";User ID=Admin;Password='')...keydb checkresult');
        SQL.Add('where products.编号=checkresult.货品编号');
        Open;
      end
      

  7.   

    TO 楼主
    SELECT a.*,b.*
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="D:\delphi实验\Createkey\data\keydata.mdb";User ID=Admin;Password=')...keydb b,
     OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source="D:\delphi实验\Createkey\data\keydb.mdb";User ID=Admin;Password=')...keytb a
    where a.date=b.date
    这是我有SQL查询分析器里的语句,要在DELPHI中用你得把这条语句转化成DELPHI能识别语句
    注意‘的使用
    这条语句里的keydb是数据库keydata.mdb中的表
    keytb是数据库keydb.mdb中的表
    你把数据库路径和表换成你的就可以了,换后你可以在试试
      

  8.   

    TO ziqing(delphi转.net中):
      多谢!可还是有问题啊,下面哪错了?谢了! 
     with Query1 do //DataModule1.ADOQuery
      begin
        //Connection := nil;
        SQL.Clear;
        SQL.Add('Select a.商品名称,a.商品别名,a.生产批号,a.商品规格,a.供应商1,a.生产厂商,a.批准文号,a.有效期,a.商品分类,a.计量单位,');
        SQL.Add('b.* From OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source="aa";User ID=Admin;Password='')...products a,');
        SQL.Add('OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source="db1.mdb";User ID=Admin;Password='')...checkresult b');
        SQL.Add('where a.编号=b.货品编号');
        Open;
     end;
    我从ADOQuery换成Query了,因为ADOQuery有个Connection 。而Query我全用的是默认设置抱错为“From 子句语法错误”
      

  9.   

    SQL.Add('where a.编号=b.货品编号');
    showmessage(sql.text);
        Open;
    如果显示为下面语句就对了!!
    Select a.商品名称,a.商品别名,a.生产批号,a.商品规格,a.供应商1,a.生产厂商,a.批准文号,a.有效期,a.商品分类,a.计量单位,b.* From OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="aa";User ID=Admin;Password=')...products a,OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="db1.mdb";User ID=Admin;Password=')...checkresult b where a.编号=b.货品编号
    另外你的数据库路径是不是对了!!你这里面的aa,和db1.mdb是不是那两个数据库