In many applications, I want to make absolutely sure that the data in a Jet table doesn’t get modified under any circumstances. I hard-lock the table in addition to using any system-level security to protect it. Also, this hard lock stays with the MDB if it is issued with an application.Place the expression True=False into the ValidationRule property of the table to lock it. The Jet evaluates this expression to False and blocks updates to the table:
'DeclarationsPublic MyDB As DatabaseDim Dummy As Integer'Sample callsDummy = HardLockTable("UnLock", "TestTable")Dummy = HardLockTable("Lock", "TestTable")Function HardLockTable_ (ByVal whichAction As String, _ ByVal aTable As String) As IntegerOn Error GoTo HardLockTableError'Default returnHardLockTable = TrueSelect Case whichActionCase "Lock" MyDB.TableDefs(aTable).ValidationRule = "True=False" MyDB.TableDefs(aTable).ValidationText = _ "This table locked via " & _ "ValidationRule on " & NowCase "UnLock" MyDB.TableDefs(aTable).ValidationRule = "" MyDB.TableDefs(aTable).ValidationText = ""Case "TestThenUnLock" If MyDB.TableDefs(aTable)._ ValidationRule = "True=False" Then MyDB.TableDefs(aTable).ValidationRule = "" MyDB.TableDefs(aTable).ValidationText = "" End IfEnd SelectHardLockTableErrorExit: 'subFlushDBEngine 'optional, see next suggestionExit FunctionHardLockTableError: HardLockTable = False MsgBox Error$ & " error " & _ "in HardLockTable trying " & _ "to " & whichAction & " " & _ aTable Resume HardLockTableErrorExitEnd Function