在For Each循环中,我的VB程序遍历集合。
在这个循环中,我正在为预备语句设置参数。
Set param1 = cmd.CreateParameter("sync_id", adChar, adParamInput, Len(sync_id), sync_id)
Set param2 = cmd.CreateParameter("fieldname", adChar, adParamInput, Len(CName), CName)
Set param3 = cmd.CreateParameter("pvname", adChar, adParamInput, Len(pvname), pvname)
Set param4 = cmd.CreateParameter("value", adChar, adParamInput, Len(CNameVal), CNameVal)
然后将命令对象附加到它们。
cmd.Parameters.Append param1
cmd.Parameters.Append param2
cmd.Parameters.Append param3
cmd.Parameters.Append param4
当CNameVal
(param4
)为空时,VB给出了一个错误:参数对象未正确定义。
我尝试在创建参数之前检查CNameVal
来解决此问题:
If CNameVal = Empty Then
Set param4 = cmd.CreateParameter("value", adEmpty, adParamInput)
'Set param4 = cmd.CreateParameter("value")
'Set param4 = cmd.CreateParameter("value", adEmpty, adParamInput, Len(CNameVal), CNameVal)
Else
Set param4 = cmd.CreateParameter("value", adChar, adParamInput, Len(CNameVal), CNameVal)
End If
这些线都没有解决问题。任何帮助表示赞赏!!
答案 0 :(得分:2)
Len(Empty) = 0
,导致错误。字符串长度不能为0
这里的正确做法是提供数据库中设置的实际固定长度,而不是当前字符串的长度。我还怀疑你需要adChar
,你可能意味着adVarChar
。
您的 If
无效,因为CNameVal = Empty
永远不会是True
。检查Empty的正确方法是IsEmpty(CNameVal)
。