2012-10-06 4 views
1

그러나 데이터 형식이 함께 작동 할 수 있다고 확신합니다. 1 테이블의 ItemID는 일련 번호 및 다른 테이블의 번호입니다. 사전에이 코드를 실행할 때 데이터 형식 변환 오류가 발생합니다

Private Sub Command17_Click() 

Dim cmbItem As String 

cmbItem = "SELECT ItemID FROM Items WHERE Items.Name = " & Me.Combo0.Value & ";" 

Dim sc1 As DAO.Recordset 
Set sc1 = CurrentDb.OpenRecordset("Buy", dbOpenDynaset) 

sc1.AddNew 
sc1.Fields("ItemID").Value = cmbItem 
sc1.Fields("BuyPrice").Value = Me.Text13.Value 
sc1.Fields("Notes").Value = Me.Text18.Value 
sc1.Update 

End Sub 

감사합니다, 밥 P

+1

어떤 라인에서 오류가 발생합니까? – Taryn

답변

1

이 당신의 오류를 트리거 라인 인 경우 ...

sc1.Fields("ItemID").Value = cmbItem 

은 ... cmbItemSELECT을 포함하는 문자열입니다 것을 알 수 statment ( SELECT ItemID FROM ...). 그리고 우리는 " 1 개의 테이블의 ItemID는 일련 번호이며 다른 테이블의 번호는"이라고 말했습니다. 그래서 숫자 필드에 문자열 값을 할당하려고합니다. 또한 해당 문자열을 유효한 숫자로 변환 할 수 없습니다. 실패해야합니다. [Name]는 당신이 비교 값 주위에 따옴표를 추가, 텍스트 필드 인 경우 ...

Dim cmbItem As Long 
cmbItem = DLookup("ItemID", "Items", "[Name]=" & Me.Combo0.Value) 

...

그냥 여기 추측하지만, 어쩌면 당신이 뭔가를 원하는

cmbItem = DLookup("ItemID", "Items", "[Name]='" & Me.Combo0.Value & "'") 

이것이 끝나면 변수의 이름을 lngItem으로 바꿔 코드가 공동 작업자를 혼란에 빠뜨릴 수 있습니다.

DLookup()이 Null을 반환하는 경우 Nz() 표현으로 전달하는 것이 좋습니다.

관련 문제