2012-10-06 54 views
1

但我確信數據類型可以一起工作,1表中的ItemID是AutoNumber,而另一個表中是數字。運行此代碼時出現數據類型轉換錯誤

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 

...注意到cmbItem是含有SELECT字符串陳述(SELECT ItemID FROM ...)。你告訴我們「ItemID從1表中是自動編號和另一個表中的編號」。所以你試圖把一個字符串值賦給一個數字字段。此外,該字符串不能轉換爲有效的數字。它必須失敗。

只是猜測這裏,但也許你想這樣的事情...

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

如果[Name]是一個文本字段,添加你周圍比較它的價值的報價...

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

如果這很接近,您可以將該變量重命名爲lngItem,這樣代碼就不太可能混淆您的協作者。

如果DLookup()可能返回Null,請考慮將它提供給Nz()表達式。