這是我的 VBA 代碼,它嘗試遍歷名稱中包含PB(PB 是所有表的前兩個字母)的所有表并洗掉它們。DoCmd我在行收到錯誤訊息
Option Compare Database
Option Explicit
Public Sub del_all_tables()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
If Not (tdf.Name Like "PB*") Then
DoCmd.DeleteObject acTable, tdf.Name
End If
Next
End Sub
編輯:我不想洗掉表本身,而是洗掉表內的記錄
uj5u.com熱心網友回復:
使用 DELETE 操作 SQL 洗掉記錄。使用CurrentDb.Execute并且不必擔心關閉和打開警告。
CurrentDb.Execute "DELETE FROM [" & tdf.Name & "]".
如果您只想從以 開頭的表中洗掉記錄PB,Not請從條件中洗掉 - 否則您將從所有其他表(包括壞的系統表)中洗掉。
Public Sub del_all_records()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
If tdf.Name Like "PB*" Then
db.Execute "DELETE FROM [" & tdf.Name & "]"
End If
Next
End Sub
uj5u.com熱心網友回復:
首先, docmd 陳述句中的物件名稱導致錯誤,因為您沒有呼叫完整的物件名稱,而是嘗試使用 like 運算子。
其次,如果要洗掉記錄而不是表,則必須使用洗掉陳述句。
您可以使用查詢設計視圖來了解訪問中的洗掉陳述句/查詢是如何的。
uj5u.com熱心網友回復:
我的原始代碼是洗掉所有不起作用的表。我從這里獲取了源代碼。 https://access-excel.tips/access-vba-loop-through-all-tables/
但是如果您想一次性洗掉多個表中的所有記錄,則需要為每個表分別創建洗掉查詢。
然后您可以使用 VBA 打開每個查詢并使用以下代碼運行:
Option Compare Database
Option Explicit
Public Function RunMyqueries()
DoCmd.OpenQuery "Query1"
DoCmd.OpenQuery "Query2"
MsgBox "Done!"
End Function
就我而言,我有 2 個查詢,如果您有更多查詢,請繼續添加它們。
此外,您可能希望每次在洗掉記錄之前關閉警告 DoCmd.SetWarnings False
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429070.html
上一篇:FindFirst與日期值
