从 MS Access 执行 SQL Server 存储过程

Joa*_*nna 5 sql vba stored-procedures sql-server-2012 ms-access-2013

我使用 MS Access 2013 和 SQL Server 2012。我已将 SQL Server 数据库连接到 MS Access。我通过 SQL Server 身份验证连接到 SQL Server。我想执行一个存储过程,并将值输入到我的表单之一的文本框中。我多年来一直在尝试这样做,但我在这个网站上发现的任何东西都不适合我。任何人都可以帮助我并给我一些关于如何编写基本 VBA 代码来执行该过程的提示吗?请帮忙!!!

Gor*_*son 5

最直接的方法可能是使用 DAO.QueryDef 对象创建临时传递查询。如果 Access 中已有链接表,则可以使用其.Connect属性(ODBC 连接信息)。您需要做的就是设置.SQLQueryDef 的属性来调用(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
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果 Text0 文本框包含,Thompson则 QueryDef 将执行

EXEC dbo.addContact N'Thompson'
Run Code Online (Sandbox Code Playgroud)

如果文本框包含O'Rourke则 QueryDef 将执行

EXEC dbo.addContact N'O''Rourke'
Run Code Online (Sandbox Code Playgroud)