Vba 如何循环访问MS Access数据库并锁定所有表

Vba 如何循环访问MS Access数据库并锁定所有表,vba,ms-access,Vba,Ms Access,我使用以下代码锁定数据库中的一些数据表: Application.SetHiddenAttribute acTable, "Employees", True 我使用这段代码在表单中循环以清除userform中的所有文本框: Dim ctl_text As Control For Each ctl_text In Me.Controls If ctl_text.ControlType = acTextBox Then ctl_text = Null Next Set

我使用以下代码锁定数据库中的一些数据表:

Application.SetHiddenAttribute acTable, "Employees", True
我使用这段代码在表单中循环以清除userform中的所有文本框:

Dim ctl_text As Control
For Each ctl_text In Me.Controls
    If ctl_text.ControlType = acTextBox Then ctl_text = Null
Next
Set ctl_text = Nothing
我希望将上述逻辑结合起来,能够在数据库中循环并锁定所有表

我尝试了以下方法:

Dim tdf As Dao.TableDef
Dim db As Dao.Database
Set db = CurrentDb

For Each tdf In db.TableDefs
    If (VBA.Left(tdf.Name, 6) = "prefix") Then
Set Application.SetHiddenAttribute = True
   End If
Next tdf
然而,我得到一个错误,告诉我“SetHiddenAttribute”参数不是可选的


你知道我该怎么做吗?

我想你一定有这个想法:

Dim tdf作为DAO.TableDef
Dim数据库作为DAO.Database
Set db=CurrentDb
对于以db.TableDefs为单位的每个tdf
如果VBA.Left(tdf.Name,6)=“前缀”,则
tdf.Attributes=tdf.Attributes或dbHiddenObject
如果结束
下一个
请注意,这不会“锁定”表,只会在正常视图中隐藏它们

要删除隐藏属性,请执行以下操作:

tdf.Attributes=tdf.Attributes而不是dbHiddenObject

我想你一定有这样的想法:

Dim tdf作为DAO.TableDef
Dim数据库作为DAO.Database
Set db=CurrentDb
对于以db.TableDefs为单位的每个tdf
如果VBA.Left(tdf.Name,6)=“前缀”,则
tdf.Attributes=tdf.Attributes或dbHiddenObject
如果结束
下一个
请注意,这不会“锁定”表,只会在正常视图中隐藏它们

要删除隐藏属性,请执行以下操作:

tdf.Attributes=tdf.Attributes而不是dbHiddenObject

它应该是
而不是
才能工作(并且不清除其他属性)。只需检查-使用属性功能时,压缩时是否有丢失表格的风险?另外,如果我想取消隐藏它,上面的相反情况会是什么?添加了代码行以删除该属性。无法从紧凑型/修复中判断生存情况-应该很容易检查。谢谢@Gustav,我将在数据库副本上运行它并给出反馈。它应该是
而不是
才能工作(并且不清除其他属性).只需检查-使用属性功能时,压缩时是否有丢失表格的风险?另外,如果我想取消隐藏它,上面的相反情况会是什么?添加了代码行以删除该属性。无法从精简/修复中判断生存情况-应该很容易检查。谢谢@Gustav,我将在数据库副本上运行它并给出反馈。
Application.SetHiddenAttribute actiable,tdf.Name,True
将是等效的。
Application.SetHiddenAttribute actiable,tdf.Name,True
将是等效值。