| Tables |
| 1.4 Nascondere una tabella? |
| AntoGal |
|
(D) E' possibile nascondere una tabella nella finestra Database? (R) [MSAccess 97] Per nascondere una tabella alla vista dell'utente, ci sono un paio di metodi. Premetto che il modo più corretto per impedire l'accesso alle tabelle, è di implementare correttamente la protezione utente, questi sono trucchetti un po' "sporchi". Il primo metodo consiste nel chiamare la tabella col prefisso "USys_", per esempio "USys_Password", e l'utente potrà visualizzare la tabella solo se ha impostato "Mostra oggetti nascosti e di sistema" nelle opzioni di visualizzazione. L'altro modo è di settare una proprietà della tabella. A differenza di altri attributi, questo è read/write, quindi può essere cambiato in qualsiasi momento. Inoltre, nascondendo la tabella con questo sistema, l'utente NON PUO' VEDERLA, anche se ha impostato "Mostra oggetti nascosti e di sistema". Questo è il codice:
Function HideTbl(strTable As String, intHide As Integer) As Integer
'Nasconde o Mostra una tabella
'Accetta: intHide: True (-1) nasconde, False (0) rende visibile
'Ritorna: True se OK, False se errore
On Error GoTo HT_ERR
Dim TDef As TableDef, dbs As Database
Set dbs = CurrentDb
Set TDef = dbs.TableDefs(strTable)
Select Case intHide
Case True
If Not (TDef.Attributes And DB_HIDDENOBJECT) Then
TDef.Attributes = TDef.Attributes + DB_HIDDENOBJECT
End If
Case Else
If (TDef.Attributes And DB_HIDDENOBJECT) Then
TDef.Attributes = TDef.Attributes - DB_HIDDENOBJECT
End If
End Select
HideTbl = True
EXIT_HT:
Exit Function
HT_ERR:
HideTbl = False
MsgBox "Error: " & Err & " " & Error, 48
Resume EXIT_HT
End Function
ATTENZIONE: se viene compattato il DB, per un "bug" di Access97, le tabelle nascoste con questo secondo metodo, verranno ELIMINATE. Quindi, assicurarsi di impostare l'attributo a False prima di ogni compattazione (che si suppone venga effettuata da un'opportuna voce di menù), e poi reimpostarla a True.
|