Newsgroup: it.comp.appl.access
Titolo: Nascondere tabelle collegate

Un saluto a tutto il NG!
Ho utilizzato la seguente funzione (ripescata in un post di qualche settimana fa
e presente anche sul Sito Comune) per nascondere le tabelle.
L'unico problema è che se nel mio database sono presenti anche delle tabelle
collegate, tale funzione non funziona (...scusate il gioco di parole....),
mentre a me servirebbe che riuscisse a rendere nascoste sia le tabelle presenti
normalmente nel db, sia altre tabelle Access collegate e, soprattutto, mi
servirebbe nascondere delle tabelle SQL collegate tramite ODBC. E' possibile
tutto ciò?
Grazie in anticipo a chi sarà in grado di darmi una soluzione.
Marco "TopGun"
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

 tutto ciò?
Per la seconda che hai detto non saprei, mentre, per nascondere delle
tabelle in un altro DB, invece di impostare:
  Set dbs = CurrentDb
userai OpenDatabase ed il percorso del BE.
Ancora meglio, il nome e percorso del DB lo potresti passare alla funzione
come paramentro Optional, se "missing" usa il CurrentDb:
 Dim dbs As Database, tdf As TableDef
 If IsMissing(NomeDbs) Then
  Set dbs = CurrentDb
 Else
  Set dbs = OpenDatabase(NomeDbs)
 End If
poi da quà in poi tutto uguale...
 Set TDef = dbs.TableDefs(strTable)
[...]
Se qualcosa non fosse chiaro, premi F1 ;-)
--
Ciao, AntoGal
*************************************************
Home Page (area programmatori di VolFtp)
http://volftp.mondadori.com/italiani/galletta/
per scaricare un gioco di DAMA ITALIANA
*************************************************

On Fri, 11 Feb 2000 23:18:51 +0100, "AntoGal" <zer...@NOSPAMtiscalinet.it>
wrote:

Ciao AntoGal, 
grazie per la tua risposta, io comunque ci avevo già pensato ed avevo fatto come
dici tu. Il problema è che facendo così vengono si nascoste le tabelle nel db
collegato, però nel db dove ci sono i collegamenti, questi rimangono visibili.
Se io provo ad importare questi collegamenti da un altro db, ci riesco ed è come
se invece di avere le tabelle fisicamente importare e quindi in locale, avessi
dei collegamenti. Nel db dove invece le tabelle sono fisicamente presenti,
queste non sono visibili e quindi non sono nè importabili nè collegabili da un
terzo db. Quello che serve a me è di NASCONDERE completamente le tabelle
all'utente: in parolo povere, che siano collegate o meno, il mio utente non deve
avere la possibilità nè di vederle, nè di tentare di importarle in un altro db.
Un grazie in anticipo di nuovo per il tuo prezioso aiuto e di quello di chiunque
altro.
Marco "TopGun"

 nè di tentare di importarle in un altro db.
comincia a implementarti un sistema di "sicurezza" utenti e gruppi, allora.
Gli oggetti nascosti non sono protetti, sono solo nascosti, e potrebbero
essere resi visibili e importati facilmente.


Ciao, AntoGal
ci ho provato, ma sinceramente non la trovo molto sicura, specialmente dopo che
mi sono scaricato quel tool da 
www.lostpassword.com
 e l'ho provato su un mio db
protetto. E' vero che nella versione demo ti da solo le prime due lettere della
password, però è anche vero che ti da i nomi di tutti i gruppi e degli utenti
all'interno di essi, e questo è già un problema perchè (correggimi se sbaglio)
si potrebbe facilmente ricostruire  l'MDW usato per la protezione e tu sai
benissimo che avendo quello sei a metà strada..... Comunque, assodato che la
sicurezza in Access fa pena, sto seguendo con molto interesse il thread sulla
sicurezza dei dati ed in particolare della tua "sfida" con il Bettini, stanno
uscendo fuori delle cose mooolto interessanti.
Spero avrai qualche altra idea riguardo al mio problema....
Ciao e grazie di nuovo,
Marco "TopGun"

Salve di nuovo a tutto il NG ed in particolare ad AntoGal che è stato l'unico a
rispondere al mio problema. Fortunatamente sono riuscito a trovare una
soluzione, cercando in Internet ho trovato questo articolo sul sito della
Microsoft:
ACC: Using Visual Basic to Hide a Link to an External Table
http://support.microsoft.com/support/kb/articles/Q188/8/01.ASP?LNG=ENG&SA=ALLKB&FR=0
Vi posto la funzione che ho trovato poichè penso sia parte integrante della
funzione di AntoGal che permetteva di nascondere le tabelle locali.
Ho creato un semplice DB con una sola form che permette di selezionare il DB con
le tabelle da collegare e  i nomi delle tabelle collegate ed automaticamente le
collega come nascoste. Permette inoltre di scollegarle e, utilizzando la
funzione di AntoGal permette anche di nascondere le tabelle locali. Se vi
interessa, lo mando al webmaster del Sito Comune (che penso sia Federico
Luciani) così magari se qualcuno ha la mia stessa esigenza di nascondere le
tabelle si trova una maschera già bella e pronta., fatemi sapere se vi
interessa.
'strDatabaseName è la path con il nome del DB dove si trovano le tabelle da
collegare
'strTableName è il nome della tabella che si vuole collegare come nascosta
'strAttachedTableName è il nome che avrà la tabella collegata nel nostro DB
Function MakeHiddenAttachedTable(strDatabaseName As String, _
               strTableName As String, strAttachedTableName As String)
         Dim db As Database
         Dim td As TableDef
         Set db = CurrentDb
         Set td = db.CreateTableDef(strAttachedTableName)
         td.Connect = ";Database=" & strDatabaseName
         td.SourceTableName = strTableName
         db.TableDefs.Append td
         td.Attributes = dbHiddenObject
         Set td = Nothing
         Set db = Nothing
End Function
'Questa funzione invece serve per "scollegare" le tabelle collegate nascoste
Function DeleteHiddenAttachedTable(strAttachedTableName As String)
         Dim db As Database
         Set db = CurrentDb
         db.TableDefs.Delete strAttachedTableName
End Function
Ciao,
Marco "TopGun"

 Spero avrai qualche altra idea riguardo al mio problema....
Hai provato a rinominare tabelle e collegamenti in USysxxxxxxx ?
BYe, Ste

 interessa.
Manda il DB all'indirizzo del sito comune, e lo farò avere a Federico per il
prossimo aggiornamento.
