2015-04-12 100 views
3

我使用MS Access 2013和SQL Server 2012.我已將我的SQL Server數據庫連接到MS Access。我通過SQL Server身份驗證連接到SQL Server。我想執行一個存儲過程,並在我的一個表單中輸入一個文本框中的值。我一直在嘗試這麼做,但我在這個網站上沒有發現任何東西適合我。任何人都可以請幫助我,並給我一些關於如何編寫基本VBA代碼來執行過程的提示?請幫忙!!!從MS Access執行SQL Server存儲過程

+0

您是否嘗試使用DAO.QueryDef對象創建傳遞查詢? –

+0

@gord thompson不,我沒有,我不知道該怎麼做... – Joanna

回答

3

可能最直接的方法是使用DAO.QueryDef對象創建臨時傳遞查詢。如果您在Access中有現有的鏈接表,則可以使用其.Connect屬性(ODBC連接信息)。所有你需要做的是設置的QueryDef的.SQL屬性調用(EXEC)存儲過程,就像這樣:

Option Compare Database 
Option Explicit 

Private Sub Command2_Click() 
    Dim cdb As DAO.Database, qdf As DAO.QueryDef 
    Set cdb = CurrentDb 
    Set qdf = cdb.CreateQueryDef("") 
    ' get .Connect property from existing ODBC linked table 
    qdf.Connect = cdb.TableDefs("dbo_myContacts").Connect 
    qdf.sql = "EXEC dbo.addContact N'" & Replace(Me.Text0.Value, "'", "''") & "'" 
    qdf.ReturnsRecords = False 
    qdf.Execute dbFailOnError 
    Set qdf = Nothing 
    Set cdb = Nothing 
End Sub 

因此,舉例來說,如果Text0文本框中包含Thompson那麼的QueryDef將執行

EXEC dbo.addContact N'Thompson' 

,如果文本框中包含O'Rourke那麼的QueryDef將執行

EXEC dbo.addContact N'O''Rourke' 
+0

謝謝!它完美的工作!你很棒!週一愉快! – Joanna

1

試用後和錯誤這一個工作對我來說

> Private Sub UpdateItems_Click() 
    >  Dim cdb As DAO.Database, qdf As DAO.QueryDef 
    >  Set cdb = CurrentDb 
    >  Set qdf = cdb.CreateQueryDef("") 
    >  ' get .Connect property from existing ODBC linked table 
    >  qdf.Connect = cdb.TableDefs("dbo_AccesLinkedTable").Connect 
    >  qdf.SQL = "EXEC dbo.YourStoreProcedure" 
    >  qdf.ReturnsRecords = False 
    >  qdf.Execute dbFailOnError 
    >  Set qdf = Nothing 
    >  Set cdb = Nothing 
    > 
    > MsgBox "Records Updated!" 
    > 
    > End Sub 
相關問題