2016-12-14 56 views
0

我想創建一個從SQL Server數據庫到MS Access數據庫的鏈接用於報告目的。我不需要過去幾年所有的數據。有沒有辦法通過Access VBA或MS Access工具來只引入我需要的行而不是所有的行?使用過濾器將SQL Server數據鏈接到MS Access數據庫

+1

是的。您可以通過在Access VBA中創建一個通過QUERY的PASS QueryDef來完成此操作。它將參數傳遞給SQL Server,並只返回所需的行。 另一種方法是在SQL Server上創建一個表,其中包含與表中的列對應的過濾條件值。您創建一個由此參數表過濾的視圖。從Access更新參數表中的值以更改視圖的結果。 – cloudsafe

+2

在僅返回所需信息的SQL Server上創建視圖也是實現此目的的另一種方法。它也可以讓你完全忽略任何你不需要這個報告的數據列。 –

+0

我將檢查QueryDef並查看是否提供了我需要的解決方案。謝謝。 – BrownEyeBoy

回答

0

我跟我們的DBA。我將創建一個視圖。雲安全感謝您的建議,我只是沒有時間去調查AccessDef的QueryDef,但我已經記下了它的未來可能的用法。

-1

使用外部數據選項卡通過ODBC連接到Access中的SQL Server數據庫,並在ACCESS中使用SQL或創建選項卡上的查詢設計器查詢您需要的數據。 SELECT * from table where DATEFIELD>無論日期

+0

這將返回表中的所有行,然後使用WHERE子句過濾它們。它可能導致網絡問題和緩慢。 – cloudsafe

+0

你是說導入所有的數據並獨立地查詢它以獲得我需要的行嗎?如果是這樣,我不想使用這種方法。我只想引入我需要的行,然後我將查詢這些行。 – BrownEyeBoy

+0

你有權訪問SQL SERVER數據庫嗎?如果是這樣,請在SQL Server數據庫中創建一個視圖,並通過訪問連接到視圖,或者讓DBA爲您創建視圖。 – niemoy

0

這是一個參數表如何在SQL Server中工作的示例,可以很容易地從Access中更新。該表使用當前用戶名和過濾器值更新或插入,更改視圖返回的行。

create table Params ( usrname as nvarchar(100) CONSTRAINT [df_load_date] DEFAULT @@SUSER_NAME , pvalue as nvarchar(100)) Insert into params (pvalue) values ('MytableName') Create view vw_test as select * from sysobjects where name in ( Select pvalue from Params where usrname = @@SUSER_NAME)

相關問題