我正在为我的应用程序使用 MS Access VBA 和 SQL Server 存储过程。我有一个表单frmUsers,它有一个文本框UserName。它绑定到 tblUsers 的用户名。如果用户在文本框输入值前使用“@”更新它,则必须清除SQL 表中的某些列(Password
和) 。Hash
tblUser
我已经为它创建了一个存储过程,并且还在UserName_AfterUpdate下编写了一些代码。我觉得我需要创建一个传递查询来调用If
语句中的存储过程,如下所示;但它不起作用(没有删除表中的值,也没有给出任何错误)。
存储过程本身可以工作,但是当我尝试使用应用程序测试它时,即在文本框前面插入'@',它不会删除表中的两列。我错过了在传递查询和文本框之间绑定的东西。请帮忙。
微软访问VBA
Private Sub UserName_AfterUpdate()
On Error Resume Next
Dim frm As Form
Dim strFilter As String
Dim DB As Database
Set DB = CodeDb
DoCmd.OpenForm "frmUsers", , , , , acDialog
Set frm = Forms!frmUsers
If frm.Tag Then
strFilter = strFilter & "sp_ClearWebsitePwd"
strFilter = strFilter & ", " & frm!UserID
If Left(UserName, 1) = "@" Then
DB.QueryDefs("qryClearWebsitePwd").Connect = SQLConnectString
DB.QueryDefs("qryClearWebsitePwd").sql = strFilter
End If
End If
End Sub
SQL Server存储过程
CREATE PROCEDURE [dbo].[sp_ClearWebsitePwd]
@userID INT
AS
BEGIN
SET NOCOUNT ON;
UPDATE tblUser
SET tblUser.Password = NULL, tblUser.Hash = NULL
WHERE UserID = @userID
END
MS Access 直通查询(qryClearWebsitePwd)
sp_ClearWebsitePwd, 20226