【问题标题】:Updating record if checkbox is checked如果选中复选框,则更新记录
【发布时间】: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


【解决方案1】:

如果InternalUse.InvoiceID的数据类型是数字而不是文本,去掉Me.txtInvoice前后的单引号:

" ... WHERE InvoiceID = " & Me.txtInvoice

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多