但我确信数据类型可以一起工作,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
答案 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()
表达式。