ms access vba 添加参数时调用过程失败
msacces vba call procedure fails when parameter added
我正在尝试自学存储过程的创建和调用。搜索了 2 天,我没有进一步解决以下问题。
我在 SQL Express 中有如下基本存储过程:
GO
/****** Object: StoredProcedure [dbo].[spTestCustomers] Script Date: 26/01/2022 15:17:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
[dbo].[spTestCustomers]
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM [tblCustomers]
END
我可以在 MS Access 中使用以下 VB 正确调用它:
Private Sub cmdTest_Click()
'define query for ptSHCustomers
Dim SQL As String, qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("ptSHCustomers")
qdf.SQL = "EXEC spTestCustomers"
Me.lstTest.Requery
End Sub
然而,当我添加一个参数时我失败了,SQL 服务器代码:
USE [WPSDb]
GO
/****** Object: StoredProcedure [dbo].[spTestCustomers] Script Date: 26/01/2022 15:25:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
[dbo].[spTestCustomers]
@Surname nvarchar(25)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM [tblCustomers]
WHERE Surname like @Surname
END
我尝试从 MS Access 调用的代码:
Private Sub cmdTest_Click()
'define query for ptSHCustomers
Dim SQL As String, qdf As DAO.QueryDef
Dim VarCustSurname As String
VarCustSurname = "%"
Set qdf = CurrentDb.QueryDefs("ptSHCustomers")
qdf.SQL = "EXEC spTestCustomers ('" & VarCustName & "');"
Me.lstTest.Requery
End Sub
我已经根据在线指南尝试了很多代码更改,但都无济于事。谁能指出我正确的方向?
EXECUTE
不使用括号。
EXEC myProc @varParam, 'literal param';
并在 VBA
qdf.SQL = "EXEC spTestCustomers '" & VarCustName & "';"
我正在尝试自学存储过程的创建和调用。搜索了 2 天,我没有进一步解决以下问题。
我在 SQL Express 中有如下基本存储过程:
GO
/****** Object: StoredProcedure [dbo].[spTestCustomers] Script Date: 26/01/2022 15:17:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
[dbo].[spTestCustomers]
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM [tblCustomers]
END
我可以在 MS Access 中使用以下 VB 正确调用它:
Private Sub cmdTest_Click()
'define query for ptSHCustomers
Dim SQL As String, qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("ptSHCustomers")
qdf.SQL = "EXEC spTestCustomers"
Me.lstTest.Requery
End Sub
然而,当我添加一个参数时我失败了,SQL 服务器代码:
USE [WPSDb]
GO
/****** Object: StoredProcedure [dbo].[spTestCustomers] Script Date: 26/01/2022 15:25:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
[dbo].[spTestCustomers]
@Surname nvarchar(25)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM [tblCustomers]
WHERE Surname like @Surname
END
我尝试从 MS Access 调用的代码:
Private Sub cmdTest_Click()
'define query for ptSHCustomers
Dim SQL As String, qdf As DAO.QueryDef
Dim VarCustSurname As String
VarCustSurname = "%"
Set qdf = CurrentDb.QueryDefs("ptSHCustomers")
qdf.SQL = "EXEC spTestCustomers ('" & VarCustName & "');"
Me.lstTest.Requery
End Sub
我已经根据在线指南尝试了很多代码更改,但都无济于事。谁能指出我正确的方向?
EXECUTE
不使用括号。
EXEC myProc @varParam, 'literal param';
并在 VBA
qdf.SQL = "EXEC spTestCustomers '" & VarCustName & "';"