2014-10-15 2 views
0

내 액세스 데이터베이스에서 다음 코드와 데이터 형식이 일치하지 않습니다.VBA 데이터 형식이 일치하지 않습니다.

If IsNull(NewZipBox) = False Then 
DoCmd.RunSQL ("UPDATE ShipAddressTest SET Zip = NewZipBox WHERE [ShipAddressTest.Zip]= '" &  Me.List90.Column(5) & "';") 
End If 

필드 번호가 숫자 데이터 유형으로 설정되어 있습니다. 텍스트로 변경하면이 오류가 사라집니다. 아무도 왜이 오류가 발생하는지 그리고 내가 그것에 대해 무엇을 할 수 있는지 설명 할 수 있습니까?

필요한 정보를 제공해 드리겠습니다.

+0

열이 문자열 유형이 아닌 경우'''작은 따옴표를 제거하십시오. –

+0

감사합니다. –

답변

0

NewZipBox 입력은 문자열 데이터 (텍스트)이므로 숫자 (정수?) 데이터 형식으로 선언 된 변수에 할당하면 그 이유로 불일치 오류가 발생합니다. CInt() 함수를 사용하여 입력 텍스트를 Zip에 할당하기 전에 변환 할 수 있습니다.

+0

답해 주셔서 감사합니다. CInt (Me.NewZipBox)를 사용하면 오버플로 오류가 발생합니다. 텍스트 상자에 CInt를 사용하는 적절한 방법은 무엇입니까? –

+0

나는 알렉 (Alec) 일 수 있었다. 사과드립니다. 나는 당신이 당신의 zip 필드를 선언했는지, 그리고 단지 Int를 선택했는지에 관해서는 모르겠다. 왜냐하면 최소한의 메모리를 사용하기 때문이다. 저는 Int. fornet이 VB와 VBA에서 Int가 16 비트 인 것을 잊어 버렸기 때문에 사용할 수있는 최대 값은 32767입니다. 값이 32767보다 큰 모든 zip은 오버플로 오류를 발생시킵니다. Zip을 Long으로 선언했다면 입력 텍스트에 변환 함수 CLng()를 사용하면 효과적입니다. 확실히 오버플로 오류가 발생해서는 안됩니다. –

관련 문제