2015-04-12 69 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 
相关问题