运行此代码时出现数据类型转换错误

时间:2012-10-06 17:32:02

标签: sql database vba ms-access

但我确信数据类型可以一起工作,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

提前致谢, Bob P

1 个答案:

答案 0 :(得分:1)

如果这是触发错误的行......

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

...请注意cmbItem是一个包含SELECT声明(SELECT ItemID FROM ...)的字符串。你告诉我们“ 1表中的ItemID是自动编号,另一个表中有一个数字”。因此,您尝试将字符串值分配给数字字段。此外,该字符串不能转换为有效数字。它必须失败。

只是在这里猜测,但也许你想要这样的东西......

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()表达式。