从多个 Access 表中删除记录

Posted

技术标签:

【中文标题】从多个 Access 表中删除记录【英文标题】:Delete records from multiple Access tables 【发布时间】:2016-03-08 15:31:15 【问题描述】:

我有多个格式相同的表格从 Excel 电子表格导入 Access。导入带来了我要删除的空记录。我可以使用 DELETE FROM HTS_01 WHERE TESTS Is Null; 从单个表中删除

但是,如果我尝试编写它来处理第二张表,

  DELETE FROM HTS_01 WHERE TESTS Is Null;
  DELETE FROM HTS_0203 WHERE TESTS Is Null;

然后我收到错误“SQL 语句结束后找到的字符。”

如果我从第一行中删除分号,则会收到语法错误“查询表达式 TESTS 中的语法错误(缺少运算符)为 Null DELETE FROM HTS_030 WHERE TESTS 为空;"

问题是我有 19 张桌子。我想我可以编写 19 个查询,然后编写一小段代码来逐个执行查询,但我试图避免这种情况。

【问题讨论】:

听起来不错。我不确定如何为此编写语法。会不会像这样简单:DELETE FROM ["&HTS_01&"] WHERE TESTS Is Null;从 ["&HTS_0203&"] 中删除 TESTS 为空; .....ETC。这就是删除整条记录所需的全部内容? 不太清楚你的意思,布伦特。我提交了一个答案,希望能让我的意图更清楚。 【参考方案1】:

一位同事提出了以下建议,并且效果很好。感谢您的帮助!

Sub delete_empty_rows()
' **************************************************************************
' J.K. DeHart
' 3/8/16
' This script will loop through all active tables in the current database and
' remove rows there the defined colmn has 'NULL' data cells
' **************************************************************************

DoCmd.SetWarnings False ' Turn warnings 'Off' for DELETE function

Dim db As Database
Dim tbl As TableDef
Dim fieldName
Dim sqlString As String
Set db = CurrentDb

fieldName = "TESTS" ' Update this value for the driving field

For Each tbl In db.TableDefs
    If tbl.Attributes = 0 Then   'This tells it to ignore hidden tables
        sqlString = "DELETE * FROM " & tbl.Name & " WHERE '" & fieldName & "' Is Null"
        DoCmd.RunSQL (sqlString)
    End If
Next

' Clean up the script
Set tbl = Nothing
Set db = Nothing

DoCmd.SetWarnings True ' Turn warnings back 'On'
End Sub

【讨论】:

以上是关于从多个 Access 表中删除记录的主要内容,如果未能解决你的问题,请参考以下文章

如果用户从表中删除记录,则刷新 Access 表单文本框

应该从多个表中删除记录

access如何字段上一条记录

从 Access 数据库中删除不存在的记录

从表中的多个重复项中删除特定记录

为啥access数据表中有一条记录不能修改