[英]MS SQL Server: Check to see if a user can execute a stored procedure
[英]Execute a SQL Server stored procedure from MS Access
我使用 MS Access 2013 和 SQL Server 2012。我已将 SQL 服务器数据库连接到 MS Access。 我通过 SQL 服务器身份验证连接到 SQL 服务器。 我想执行一个存储过程,其中一个值输入到我的 forms 之一的文本框中。 我已经尝试了很多年了,但是我在这个网站上找到的任何东西都不适合我。 谁能帮助我并给我一些关于如何编写基本的 VBA 代码来执行该过程的提示? 请帮忙!!!
可能最直接的方法是使用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'
经过试验和错误,这个适合我
> 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
谢谢你的帮助。 不幸的是我的查询不起作用
SQL-DB 中存储过程的名称是“dbo.Inventory_del_dataset”
这就是它应该做的:DELETE FROM Inventory where Key_Set = '320207'
当我在 SQL 中运行该程序时,它可以正常工作。
现在我在 Access-DB 中创建了一个传递查询,其内容如下:
currentdb.QueryDefs("dbo.Inventory_del_dataset").Execute
当我现在在 Access 中运行传递查询时,我收到以下消息:
[Microsoft][用于 SQL 服务器的 ODBC 驱动程序 17][SQL Server]'dbo.Inventory_del_dataset' (#102) 附近的语法不正确
你有另一个想法我做错了什么吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.