VBA: 在 with/end with 语句中创建多个参数
VBA: creating multiple parameters inside with/ end with statement
我的代码没有错误。我的问题更多是出于想学习可以包含多个参数的 With/End With 语句的语法。现在设置了一个新的 ADODB.Command 并在 With/End With ActiveConnection 中包含了 commandType 和 CommandText。然后在 With 5 之外创建、附加和分配参数。
我想知道这些参数是否也可以在 ADODB.Command 的 With/End With 中。
这是我的代码:
Set ADOQD = New ADODB.Command
With ADOQD
.ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_AddFeedback"
End With
Set pArrangementID = CreateParameter("@ArrangementID", adVarChar, adParamInput, 15)
ADOQD.Parameters.Append pArrangementID
pArrangementID = Forms("MTDDataCheck").ArrangementID.Value
Set pEditor = ADOQD.CreateParameter("@Editor", adVarWChar, adParamInput, 20)
ADOQD.Parameters.Append pEditor
pEditor = gstrLastEditor
Set pProofer = ADOQD.CreateParameter("@Proofer", adVarWChar, adParamInput, 20)
ADOQD.Parameters.Append pProofer
pProofer = gstrLastProofer
Set pControlName = ADOQD.CreateParameter("@ControlName", adVarWChar, adParamInput, 255)
ADOQD.Parameters.Append pControlName
pControlName = lbl.name
Set pComment = ADOQD.CreateParameter("@Comment", adLongVarWChar, adParamInput, -1)
ADOQD.Parameters.Append pComment
pComment = reply
这是我的尝试:
Set ADOQD = New ADODB.Command
With ADOQD
.ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_DeleteFeedback"
Set pArrangementID = .CreateParameter("@ArrangementID", adVarChar, adParamInput, 15)
.Parameters.Append pArrangementID
pArrangementID = Forms("MTDDataCheck").ArrangementID.Value
Set pControlName = .CreateParameter("@ControlName", adVarWChar, adParamInput, 255)
.Parameters.Append pControlName
pControlName = lbl.name
.Execute
End With
这是正确的做法吗?非常感谢任何例子。
谢谢。
收到响应后的代码:
Set ADOQD = New ADODB.Command
With ADOQD
Set .ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_AddFeedback"
.Parameters.Append .CreateParameter("@ArrangementID", adVarChar, adParamInput, 15, Forms("MTDDataCheck").ArrangementID.Value)
.Parameters.Append .CreateParameter("@Editor", adVarWChar, adParamInput, 20, gstrLastEditor)
.Parameters.Append .CreateParameter("@Proofer", adVarWChar, adParamInput, 20, gstrLastProofer)
.Parameters.Append .CreateParameter("@ControlName", adVarWChar, adParamInput, 255, lbl.name)
.Parameters.Append .CreateParameter("@Comment", adLongVarWChar, adParamInput, -1, reply)
.Execute
End With
我还以为
ADOQD.Parameters.Append pArrangementID
pArrangementID = Forms("MTDDataCheck").ArrangementID.Value
实际上会失败或用字符串替换集合中的参数...
没关系,因为您不需要显式创建参数,随其他所有内容一起提供值:
Set ADOQD = New ADODB.Command
With ADOQD
SET .ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_AddFeedback"
.Parameters.Append .CreateParameter("@ArrangementID", adVarChar, adParamInput, 15, Forms("MTDDataCheck").ArrangementID.Value)
.Parameters.Append .CreateParameter("@Editor", adVarWChar, adParamInput, 20, gstrLastEditor)
...
End With
我的代码没有错误。我的问题更多是出于想学习可以包含多个参数的 With/End With 语句的语法。现在设置了一个新的 ADODB.Command 并在 With/End With ActiveConnection 中包含了 commandType 和 CommandText。然后在 With 5 之外创建、附加和分配参数。
我想知道这些参数是否也可以在 ADODB.Command 的 With/End With 中。
这是我的代码:
Set ADOQD = New ADODB.Command
With ADOQD
.ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_AddFeedback"
End With
Set pArrangementID = CreateParameter("@ArrangementID", adVarChar, adParamInput, 15)
ADOQD.Parameters.Append pArrangementID
pArrangementID = Forms("MTDDataCheck").ArrangementID.Value
Set pEditor = ADOQD.CreateParameter("@Editor", adVarWChar, adParamInput, 20)
ADOQD.Parameters.Append pEditor
pEditor = gstrLastEditor
Set pProofer = ADOQD.CreateParameter("@Proofer", adVarWChar, adParamInput, 20)
ADOQD.Parameters.Append pProofer
pProofer = gstrLastProofer
Set pControlName = ADOQD.CreateParameter("@ControlName", adVarWChar, adParamInput, 255)
ADOQD.Parameters.Append pControlName
pControlName = lbl.name
Set pComment = ADOQD.CreateParameter("@Comment", adLongVarWChar, adParamInput, -1)
ADOQD.Parameters.Append pComment
pComment = reply
这是我的尝试:
Set ADOQD = New ADODB.Command
With ADOQD
.ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_DeleteFeedback"
Set pArrangementID = .CreateParameter("@ArrangementID", adVarChar, adParamInput, 15)
.Parameters.Append pArrangementID
pArrangementID = Forms("MTDDataCheck").ArrangementID.Value
Set pControlName = .CreateParameter("@ControlName", adVarWChar, adParamInput, 255)
.Parameters.Append pControlName
pControlName = lbl.name
.Execute
End With
这是正确的做法吗?非常感谢任何例子。
谢谢。
收到响应后的代码:
Set ADOQD = New ADODB.Command
With ADOQD
Set .ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_AddFeedback"
.Parameters.Append .CreateParameter("@ArrangementID", adVarChar, adParamInput, 15, Forms("MTDDataCheck").ArrangementID.Value)
.Parameters.Append .CreateParameter("@Editor", adVarWChar, adParamInput, 20, gstrLastEditor)
.Parameters.Append .CreateParameter("@Proofer", adVarWChar, adParamInput, 20, gstrLastProofer)
.Parameters.Append .CreateParameter("@ControlName", adVarWChar, adParamInput, 255, lbl.name)
.Parameters.Append .CreateParameter("@Comment", adLongVarWChar, adParamInput, -1, reply)
.Execute
End With
我还以为
ADOQD.Parameters.Append pArrangementID
pArrangementID = Forms("MTDDataCheck").ArrangementID.Value
实际上会失败或用字符串替换集合中的参数...
没关系,因为您不需要显式创建参数,随其他所有内容一起提供值:
Set ADOQD = New ADODB.Command
With ADOQD
SET .ActiveConnection = ADOCon
.CommandType = adCmdStoredProc
.CommandText = "jsp_AddFeedback"
.Parameters.Append .CreateParameter("@ArrangementID", adVarChar, adParamInput, 15, Forms("MTDDataCheck").ArrangementID.Value)
.Parameters.Append .CreateParameter("@Editor", adVarWChar, adParamInput, 20, gstrLastEditor)
...
End With