有delphi大侠在否,请教一个ADO的查询办法:
adoquery1连sql server上的表1
adoquery2连本地access上的表2
表1,表2都有工号字段请问如何得出: 表1里面包含表2的的工号的数据?我写的Adoquery1的SQL代码为 select * from 表1 where 工号 in (select 工号 from 表2)但是由于表1和表2不再同一个库里面,所以执行报错恳请大侠指点,谢谢!

解决方案 »

  1.   

    两数据库同在一台主机select * from 表1 where 工号 in (select 工号 from 数据库二..表2) 
    不同服务器的:select * from  表1 where 工号 in(select 工号 form   OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=另一服务器名称或IP地址;User ID=用户名;Password=数据库密码'
             ).数据名.dbo.表2)
      

  2.   

    谢谢GDTOPONE,select * from  表1 where 工号 in (select 工号 from opendatasource(
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source=E:\access库.mdb;User ID=Admin;Password=;')...表2)当access库在Sql服务器上E:的时候,执行出来没问题
    请问如何使用任何客户端电脑上的Access库? 感谢
      

  3.   

    客户机存放数据库的文件夹必须共享:
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="\\客户端计算机名\客户端共享的文件夹名\数据库名.mdb";User ID=Admin;Password=')...表名例如:
    SELECT * from 表1 where 工号 in(select 工号
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="\\17AFECC3E30B444\chenhu2\mytest.mdb";User ID=Admin;Password=')...表2)
      

  4.   

    谢谢大侠,那这样可能把问题复杂化了
    对不起,可能我没说清楚问题:SQLServer服务器上有一个员工信息表1,内有所有员工详细信息;
    我的电脑有一个工号的清单,大约200多个工号,
    想通过客户端软件从服务器上获得这200多个工号的详细信息。目前客户端软件带有一个access库,软件分别通过ADOquery1连SQL服务器,ADOquery2连本地的access,
    现在已经将200个工号信息,通过本软件导入到本地access库的表2,请问下一步如何从SQLServer库中获取那200多工号的详细信息呢?谢谢!
      

  5.   

    按你以上所说的,主要是想获取服务器端数据的数据表资料
    1.在窗体中加一个ADOConnection控件同来联接服务器的SQL数据.
    2:指定ADOquery1联向该ADOConnection控件.
    3.ADOquery1的SQL语句写入:select * from 表名
    这样不就可以提出资料了.
    我理解你的意思是这样
      

  6.   

    连接ACCESS数据库,然后用IN子句访问SQL SERVER
    参见: http://www.delphibbs.com/keylife/iblog_show.asp?xid=101在ACCESS中访问其它ODBC数据源
    下例在ACCESS中查询SQLSERVER中的数据
        SELECT * FROM Tab1 IN [ODBC]
        [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
      

  7.   

    好像不行啊,我执行时出现opendatasource涉及安全问题,组件设定为off了
    由于日文的,只看了个大概

    SQL Server によって、コンポーネント 'Ad Hoc Distributed Queries' の STATEMENT 'OpenRowset/OpenDatasource' に対するアクセスがブロックされました。サーバーのセキュリティ構成で、このモジュールが OFF に設定されているためです。システム管理者は sp_configure を使用して、'Ad Hoc Distributed Queries' の使用を有効にできます。'Ad Hoc Distributed Queries' を有効にする手順の詳細については、SQL Server Books Online の「セキュリティ構成 (Surface Area Configuration)」を参照してください。
      

  8.   

    对于异机的SQLSERVER与ACCESS,象楼主这种业务,可以用下面两种方法试试
    一、从服务器下载数据到本地的ACCESS表中,然后再比较就方面了,反正也就2-300条记录,速度快二、从服务器查询后导出到本地XML文件中,再进行与本地的ACCESS表对比。