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

4

1 回答 1

1

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

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

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

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

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

于 2012-10-06T17:48:34.223 回答