我的数据库在 SQL 中。我使用 Access 作为前端。是否可以获取文本框的值,将其存储为变量并将其从 Access 传递到 SQL 中的存储过程?
问问题
3663 次
2 回答
1
您可以使用 VBA 创建执行传递查询的 QueryDef。例如,我的 SQL Server 上有一个名为 [myDb] 的数据库,并且我创建了一个名为的 ODBC 系统 DSN myDb
,以便 Access 可以连接到它。该数据库包含一个名为 [myContacts] 的表...
ID LastName
1 Thompson
2 Gumby
...和一个名为 [getContact] 的存储过程
CREATE PROCEDURE getContact
-- Add the parameters for the stored procedure here
@id int = 1
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT * FROM myContacts WHERE ID=@id
END
以下 VBA 代码创建传递查询,使用标识要处理的 ID 号的参数执行存储过程,并将返回的行保存在 Recordset 中:
Sub spTest()
Dim qdf As DAO.QueryDef, rst As DAO.Recordset
Dim IdValueToProcess As Long
IdValueToProcess = 2 ' test data
Set qdf = CurrentDb.CreateQueryDef("")
qdf.ReturnsRecords = True
qdf.Connect = "ODBC;DSN=myDb;Trusted_Connection=Yes;"
qdf.SQL = "EXEC dbo.getContact " & IdValueToProcess
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
Debug.Print rst!LastName ' just to make sure we got a result
rst.Close
Set rst = Nothing
qdf.Close
Set qdf = Nothing
End Sub
于 2013-06-19T19:43:41.350 回答
0
可能有更直接的方法,但您可以:
在 SQL Server 中创建一个 1 行 1 列的表。
在执行存储过程之前,您的 Access db 可以清除该表并将您的值插入其中(使用标准的 Delete 和 Insert 查询)。
然后,您的存储过程可以通过简单的 Select 访问该值(或多个值)。
于 2013-06-19T19:25:43.907 回答