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)
그런 다음 명령 개체를 추가하십시오. CNameVal
(param4
)이 비어있는 경우
cmd.Parameters.Append param1
cmd.Parameters.Append param2
cmd.Parameters.Append param3
cmd.Parameters.Append 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'이 실제로 문제가되었습니다! 이제 길이 = 1 일 때 수동으로 길이를 1로 설정했습니다. 'CNameVal = Empty'에 대한 정확한 설명이 아닙니다. 제 경우에는 IsEmpty (CNameVal)이 절대로 True가 아니며 CNameVal = Empty '또는'CNameVal = ""'is ... 그 이상한가요? :) – netiul
@ZacL 틀렸어. 뭔가를'Empty' ('Null '과 함께 할 수는 없다)와 비교할 수있다. 그러나'Empty'는'Variant' 데이터 타입 내에서 특별한 값으로 문자열 길이가 0인지를 알기 위해 사용하고 있습니다. 이것은 VB가 변환을 처리하기 때문에 작동합니다. 그래서'Empty = ""는'True'를 반환합니다. 여러분의 코드가 목표에 대해 더 명확하게하기 위해서는'a_string = Empty'가 아닌'Len (a_string) = 0'을 확인하는 것이 좋습니다. – GSerg