2013-06-19 77 views

回答

0

有可能是一個更直接的方法,但你可以:

  1. 做一個1行1頁的表中的SQL Server。

  2. 在執行存儲過程之前,您的Access數據庫可以清除該表並將其值插入(使用標準的刪除和插入查詢)。

  3. 然後,您的存儲過程可以使用簡單的Select來訪問該值(或值)。

0

您可以使用VBA創建一個執行傳遞查詢的QueryDef。例如,我在我的SQL Server上有一個名爲[myDb]的數據庫,並且我創建了一個名爲myDb的ODBC系統DSN,因此Access可以連接到它。該數據庫包含一個名爲[myContacts]

ID LastName 
1 Thompson 
2 Gumby 

表......和存儲過程名爲[getContact]

CREATE PROCEDURE getContact 
    -- Add the parameters for the stored procedure here 
    @id int = 1 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    SELECT * FROM myContacts WHERE [email protected] 
END 

下面的VBA代碼創建一個傳遞查詢,執行存儲過程與一個參數標識要處理的ID號,並將返回的行保存在Recordset中:

Sub spTest() 
Dim qdf As DAO.QueryDef, rst As DAO.Recordset 
Dim IdValueToProcess As Long 

IdValueToProcess = 2 ' test data 

Set qdf = CurrentDb.CreateQueryDef("") 
qdf.ReturnsRecords = True 
qdf.Connect = "ODBC;DSN=myDb;Trusted_Connection=Yes;" 
qdf.SQL = "EXEC dbo.getContact " & IdValueToProcess 
Set rst = qdf.OpenRecordset(dbOpenSnapshot) 

Debug.Print rst!LastName ' just to make sure we got a result 

rst.Close 
Set rst = Nothing 
qdf.Close 
Set qdf = Nothing 
End Sub 
相關問題