【问题标题】:how to update a record in a table via a sql command within an IF statement如何通过 IF 语句中的 sql 命令更新表中的记录
【发布时间】:2020-04-16 22:18:40
【问题描述】:

我正在尝试关闭一条记录,其中我在表格中有一个 True/False 列。下面的代码,我不断收到编译错误预期的语句结束。我错过了什么?在任何给定时间,只有一条记录为真。

If Me.butCompleteFlight.Value = True Then 
    UPDATE tblFlightRecords SET strWorkingRecord = FALSE WHERE strWorkingRecord = TRUE

【问题讨论】:

    标签: sql vba ms-access sql-update


    【解决方案1】:

    您不能像这样混合使用 SQL 代码和 VBA 代码。
    可以使用DoCmd.RunSQL方法执行更新语句:

    If Me.butCompleteFlight.Value = True Then 
        Dim SQL As String 
        SQL = "UPDATE tblFlightRecords SET strWorkingRecord = FALSE WHERE strWorkingRecord = TRUE"
        DoCmd.RunSQL SQL
    End If
    

    【讨论】:

    • 谢谢,抱歉,我对这一切很陌生,只是想解决一个流程,该流程需要某人将一周工作时间的近 50% 用于更易于管理的几个按钮。
    • @Cam 如果此答案解决了您的问题,请考虑通过单击复选标记接受它。
    【解决方案2】:

    通常,在任何应用层语言(从 Java 到 Python 到 VBA)中,您都不能在单独的行上单独提交 SQL 查询。与通用语言相比,SQL 是一种特殊用途的独立语言。因此,它在应用层中无法识别。

    您必须使用接口或 API 对象调用 SQL 语句。在 MS Access VBA 中,有许多方法可以运行操作查询,其中一些支持参数化。

    DoCmd 接口

    1. DoCmd.OpenQuery(需要提前保存查询)

    2. DoCmd.RunSQL(运行字符串查询)

    DAO API

    1. QueryDef.Execute (需要保存或临时查询并支持parameterization

    2. Database.Execute (运行字符串或保存的查询)

    ADO API

    1. Connection.Execute (运行字符串或存储的查询)

    2. Command.Execute (运行字符串或存储查询,支持parameterization

    请注意:VBA 不是连接到 MS Access 数据库的唯一方法。 Java、Python、C# 和其他其他工具也可以,但您必须遵守所选的 SQL API、模块或库。这些都不允许 SQL 在单独的行上单独运行。

    【讨论】:

    • 谢谢,我会进一步研究。婴儿步......遗憾的是,这不是我主要工作的驾驶室。我只是想尽我所能去摸索。
    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2015-05-09
    • 2021-06-21
    • 1970-01-01
    • 2018-02-18
    • 2021-02-12
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多