1
在For Each循環中,我的VB程序遍歷集合。通過adodb準備的語句插入空字符串
在這個循環內我設置了準備語句的參數。
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給我一個錯誤:paramater對象未得到正確限定。
我試圖通過創建參數之前檢查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
這些都不行解決問題。任何幫助讚賞!
Len(Empty)= 0'確實是問題!我現在在length = 0時手動將長度設置爲1.你說'CNameVal = Empty'不是正確的方法:在我的例子中,'IsEmpty(CNameVal)'永遠不會是'True','CNameVal = Empty '或'CNameVal =「」'是...那是不是很奇怪? :) – netiul
@ZacL我錯了,你可以用'Empty'來比較一下(你不能用'Null')。但'Empty'是'Variant'數據類型中的一個特殊值,並且您正在使用它來判斷該字符串是否具有零長度。這是有效的,因爲VB會爲你處理轉換,所以儘管它們是不同的東西,Empty =「」會產生「True」。爲了讓你的代碼更加清楚它的目標,建議你檢查'Len(a_string)= 0'而不是'a_string = Empty'。 – GSerg