如何在传递查询中使用本地数据库表?

时间:2014-07-22 14:52:33

标签: ms-access passthru pass-through

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

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

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

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

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

我刚刚遇到了一个可能在类似情况下帮助其他人的解决方案。

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

的步骤

  1. 创建一个查询,将其设为" Pass Through"查询,并设置其" ODBC Connect Str"连接到远程数据库的属性。
  2. 编写传递查询,例如SELECT RemoteId From RemoteTable,并通过查询传递名称,也许PassThroughQuery
  3. 创建一个新查询,使其成为常规"选择"查询。
  4. 使用您刚刚在此新查询中创建的传递查询作为编写新查询(看起来很奇怪,将查询用作表,但它有效)并加入{{ 1}}" table"到本地表并根据本地表中的值对其进行过滤,例如PassThroughQuery
  5. 这种方法允许您干净地混合/加入传递查询的结果和本地Access数据库表中的数据,尽管如果涉及大量数据,可能会很慢。

答案 1 :(得分:0)

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

如果你必须坚持传递,可能的解决方法是你可以使用嵌套查询的结果而不是查询字符串本身构建一个SQL字符串(取决于结果的数量,这可能是实际的,也可能是不实际的)< / p>

e.g。您使用Select column1 from tbl_Name1

代替"c1result1","c1result2",....