【问题标题】:How to use local DB table in a pass-through query?如何在直通查询中使用本地数据库表?
【发布时间】:2014-07-22 14:52:33
【问题描述】:

我目前正在处理 Access 2010 中的查询,并且正在尝试使以下查询正常工作。我的本地数据库和我正在通过的服务器之间的连接字符串可以正常工作。

Select column1 , column2 from serverDB.dbo.table1 where column1 in (Select column1 from tbl_Name1)

在这种情况下 table1 是我要通过的服务器上的表,但 tbl_Name1 是实际上在我的 Access DB 中的表,我试图用它来对我的数据创建约束从服务器拉取。

当我尝试运行查询时,我收到它认为 tbl_Name1 不存在的错误。

感谢任何帮助!

【问题讨论】:

    标签: ms-access passthru pass-through


    【解决方案1】:

    我刚刚发现了一个可以帮助处于类似情况的其他人的解决方案。

    这种方法很简单,因为您只需在本地 Access 数据库上运行一个查询,即可一次获得所需的一切。但是,许多过滤/搅动结果可能在您自己的本地计算机上在幕后完成,而不是在远程服务器上,因此它可能不一定很快。

    步骤

    1. 创建一个查询,使其成为“传递”查询,并设置其“ODBC Connect Str”属性以连接到远程数据库。
    2. 编写传递查询,例如SELECT RemoteId From RemoteTable 并为传递查询命名,可能是PassThroughQuery
    3. 创建一个新查询,使其成为常规的“选择”查询。
    4. 编写您的新查询,在这个新查询中使用您刚刚创建为 的传递查询(将查询用作表似乎很奇怪,但它有效)并加入该 @987654323 @"table" 到你的本地表并根据本地表中的值过滤它,比如SELECT R.RemoteId, L.LocalValue FROM PassThroughQuery R INNER JOIN LocalTable L ON L.LocalId = R.RemoteId where L.LocalValue = 'SomeText'

    这种方法允许您干净地混合/加入直通查询的结果和本地 Access 数据库表中的数据,尽管如果涉及大量数据,可能会很慢。

    【讨论】:

      【解决方案2】:

      我认为问题在于传递查询是在服务器上运行的查询。由于其中一张表位于本地 Access 文件中,因此无法找到该表。

      如果您必须保持传递,可能的解决方法是您可以使用嵌套查询的结果而不是查询字符串本身构建 SQL 字符串(取决于结果的数量,这可能会或可能不会实用)

      例如而不是Select column1 from tbl_Name1 你使用"c1result1","c1result2",....

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-09
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      相关资源
      最近更新 更多