【发布时间】:2016-01-11 14:34:54
【问题描述】:
我正在创建一个简单的 POS 系统,但遇到了错误。在结帐表单上,它显示一个发票 ID、我在 [购物车] 表中的项目的子表单、结帐按钮和 3 个复选框:未售税、已售税和内部使用。我想要的是,如果您选择 cboxSoldNoTax 并单击结帐,[Cart] 中的所有项目都会在“SoldNoTax”字段下更新为“是”。但问题是当我单击结帐按钮时,我会收到以下错误消息:
运行时错误“3464”:
标准表达式中的数据类型不匹配。
下面是我的vba代码:
Private Sub btnCheckout_Click()
txtInvoice.Value = DMax("InvoiceID", "Invoice")
If cboxSoldTax.Value = True Then
DoCmd.RunSQL "UPDATE [Cart] SET SoldTax = 'Yes' WHERE InvoiceID = '" & Me.txtInvoice & "'"
End If
If cboxInternal.Value = True Then
DoCmd.RunSQL "UPDATE [Cart] SET InternalUse = 'Yes' WHERE InvoiceID = '" & Me.txtInvoice & "'"
End If
If cboxSoldNoTax.Value = True Then
DoCmd.RunSQL "UPDATE [Cart] SET SoldNoTax = 'Yes' WHERE InvoiceID = '" & Me.txtInvoice & "'"
End If
End Sub
我还提供了访问数据库的链接。以下是使用数据库的说明:“开始”表单 -> 主菜单 -> Flask -> 选择数量 -> 添加到购物车 -> 结帐按钮 -> 选择 3 个复选框中的一个 -> 结帐按钮。
https://drive.google.com/file/d/0Bye-M8FI1tRUYm9QT3o5a0tyMkE/view?usp=sharing
任何帮助或建议都会很棒。提前致谢!
【问题讨论】:
-
如果
InternalUse.InvoiceID的数据类型是数字而不是文本,去掉Me.txtInvoice前后的单引号:" ... WHERE InvoiceID = " & Me.txtInvoice -
如果
SoldTax是 Yes/No 字段类型,请将值设置为 True 而不是“Yes”:SET SoldTax = True -
谢谢! @HansUp 这解决了问题!
标签: sql ms-access vba sql-update