2014-07-22 36 views
0

我目前正在研究Access 2010中的查詢,並試圖讓下面的查詢工作。我有我的本地數據庫和我通過工作得很好的服務器之間的連接字符串。如何在傳遞查詢中使用本地數據庫表?

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

在這種情況下,表1是我穿過去的服務器上的表,但tbl_Name1的是,居然是在我的Access數據庫,我想用它來創建的限制表關於我從服務器上提取的數據。

當我嘗試運行查詢時,出現錯誤,它認爲tbl_Name1不存在。

任何幫助表示讚賞!

回答

0

我認爲問題是傳遞查詢是在服務器上運行的查詢。由於其中一個表位於本地Access文件中,因此它不會找到該表。

可能的解決方法如果您必須保留傳遞方式,您可以使用嵌套查詢的結果而不是查詢字符串本身構建SQL字符串(具體取決於可能或不可行的結果數)

eg而不是Select column1 from tbl_Name1"c1result1","c1result2",....

+0

有沒有辦法讓它工作? – tarheel

+1

如果表格已鏈接,則可以對錶格進行處理,因爲它們都是本地表格,但查詢時可能會出現性能損失 – ashareef

+0

類似討論http://stackoverflow.com/questions/23615708/sql-join-從微軟存取表至另一表貫通ODBC的使用通第 – ashareef

0

我剛剛遇到了一個解決方案,可以幫助其他人在類似的情況。

這種方法很簡單,因爲您可以在本地Access數據庫上運行一個查詢,並一次性獲得所需的所有內容。然而,大量的過濾/攪動結果可能會在你自己的本地計算機上進行,而不是在遠程服務器上完成,所以它可能不一定很快。

步驟

  1. 創建一個查詢,使之成爲「通過」查詢,並設立了「ODBC連接字符串」屬性來連接到遠程數據庫。
  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數據庫表中的結果數據乾淨,雖然可能緩慢如果涉及大量數據的話。

相關問題