![]() |
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 FunctionATTENZIONE: 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. |