0

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

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

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

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

任何帮助表示赞赏!

4

2 回答 2

1

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

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

脚步

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

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

于 2018-01-29T21:17:56.640 回答
0

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

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

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

于 2014-07-22T15:20:08.030 回答