从MS Access执行SQL Server存储过程

5

我使用MS Access 2013和SQL Server 2012。我将我的SQL Server数据库连接到了MS Access。我通过SQL Server身份验证连接到SQL Server。我想执行一个存储过程,并将值输入到我的表单中的文本框中。我一直在尝试很长时间,但我在这个网站上找到的所有方法都不起作用。请问有谁能帮助我并给我一些提示,如何编写一个基本的VBA代码来执行该过程?拜托了!!!


你尝试使用 DAO.QueryDef 对象创建一个穿透查询了吗? - Gord Thompson
@gord thompson 我没有这样做过,也不知道如何操作... - Joanna
2个回答

5

创建一个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'

2
试验后,这个方法对我有效。
 > 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接