使用VBA从访问中删除数据



我正在尝试从 VBA 中的当前 Access 数据库中删除每条记录,其中OTP = txtOTP.valueVARIABLE = {NomAdminContrats,TelAdminContrats,TelecAdminContrats, [...]}

这是我的代码:

Dim query As Recordset 
Set query = CurrentDb.Execute("DELETE * FROM tb_SOMMAIRE WHERE OTP = '" & txtOTP.value & "' AND (VARIABLE = 'NomAdminContrats' or VARIABLE = 'TitreAdminContrats' or VARIABLE = 'UnitAdminContrats' or VARIABLE = 'AdrAdminContrats' or  VARIABLE = 'VilleAdminContrats' or VARIABLE = 'TelAdminContrats' or VARIABLE = 'TelecAdminContrats' or VARIABLE = 'CourrielAdminContrats')")

尝试使用 OpenRecordset 时出现错误 3219 无效操作,或者在尝试执行时收到预期函数时出现错误。我已经尝试了很多事情,但我还没有设法让这个查询工作。我在记录集中也有完整的表,使用 myRecordset.Delete 会更容易/更快吗?如果是这样,我该怎么做?

编辑

现在尝试使用 CurrentDb.Execute 而不是 CurrentDb.OpenRecordset。错误现在是预期功能,而不是无效操作

您不应该对recordset.execute函数使用括号,除非您要发送execute函数选项以及查询。

currentDB.Execute ("SQL EXECUTABLE QUERY", Options)

options 是可以包含在函数中的可选常量,例如 dbDenyWritedbFailOnError。 当您不在执行函数中包含选项时,Microsoft将使用默认的 dbInconsistent,并且不应使用括号。

Set query = CurrentDb.Execute "DELETE * FROM tb_SOMMAIRE..."

使用变量 sql 时代码工作的原因是您在使用变量时没有使用参数。

你已经解决了这个问题。 祝贺。 查看WHERE子句的不同方法是否更易于使用。

WHERE 子句检查VARIABLE是否与值列表匹配。 无需使用多个OR条件将VARIABLE与列表中的每个成员进行比较,只需询问数据库引擎值列表中是否存在VARIABLE IN即可。

AND
    (
        [VARIABLE] IN
            (
                'NomAdminContrats',
                'TitreAdminContrats',
                'UnitAdminContrats',
                'AdrAdminContrats',
                'VilleAdminContrats',
                'TelAdminContrats',
                'TelecAdminContrats',
                'CourrielAdminContrats'
            )
    )

终于设法让它工作了。由于某种原因,不得不为查询声明另一个变量。

Dim sql as String
sql = "DELETE * FROM tb_SOMMAIRE WHERE OTP = '" & txtOTP.value & "' AND (VARIABLE = 'NomAdminContrats' or VARIABLE = 'TitreAdminContrats' or VARIABLE = 'UnitAdminContrats' or VARIABLE = 'AdrAdminContrats' or  VARIABLE = 'VilleAdminContrats' or VARIABLE = 'TelAdminContrats' or VARIABLE = 'TelecAdminContrats' or VARIABLE = 'CourrielAdminContrats')"
CurrentDb.Execute sql

相关内容

  • 没有找到相关文章

最新更新