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.


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.