【问题标题】:VBA update queryVBA 更新查询
【发布时间】:2009-07-22 15:52:16
【问题描述】:

下面的查询结果是零行更新

但我确定有记录要更新

DoCmd.RunSQL (" Update tbltesting set IsDiff ='Yes' " & _
                "where empid= " & Me.txtEmpId.Value & _
                " and testid= " & Me.txtAutoNumber.Value & ";")

请帮忙!!

【问题讨论】:

  • 如果您想获得好的答案,建议您不要多次发布。

标签: sql ms-access vba


【解决方案1】:

运行此检查以确保您的字段包含您认为的数据:

DoCmd.RunSQL (" SELECT * FROM tbltesting " & _
                "WHERE empid= " & Me.txtEmpId.Value & _
                " and testid= " & Me.txtAutoNumber.Value & ";")

顺便说一句,您可以省略 .Value 部分。

【讨论】:

  • 没问题。很高兴你把它理顺了。
【解决方案2】:

也许你需要在 WHERE 参数周围加上单引号:

DoCmd.RunSQL (" Update tbltesting set IsDiff ='Yes' where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "';")

【讨论】:

  • 不,我们已经在 OPs 原始线程中介绍了这一点。 :(
【解决方案3】:

尝试删除 .Value 如果仍然没有更新,则将“是”更改为 1。

您也可以尝试不带单引号的 Yes。

【讨论】:

  • Access 和 Jet/ACE 中 True 的值是 -1,而不是 1。但是,这里使用 1 实际上在附加到布尔字段时确实有效,因为 True (-1) 确实定义为不假。如果我正在编写此 SQL,我会使用不带引号的 True。
  • “布尔字段”——矛盾修饰法。 SQL 数据类型可以为 NULL,Access 数据库引擎的 YESNO 数据类型也不例外。三值逻辑不等于布尔值。
【解决方案4】:

在调试模式下,将带有实际值的删除语句剪切并粘贴到您正在使用的任何数据库开发环境中 - 在数据库中运行查询,这将告诉您是否存在语法问题或数据问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多