General

6.225 Visualizzare in una maschera continua l'elenco delle query che usano un determinata tabella
  Roberto

Può essere utile, ai fine della manutenzione di un database, conoscere quali siano le query che utilizzano una determinata tabella.
A tale scopo si crea una tabella chiamata ElencoQuery che contenga un unico campo di tipo Testo chiamato NomeQuery.
Si crea quindi una maschera con visualizzazione a maschere continue che abbia come origine record la tabella ElencoQuery. Nell'intestazione di tale maschera inserire una casella di testo non associata chiamata MiaTabella.
A fronte dell'evento "Dopo aggiornamento" della casella di testo MiaTabella generare il seguente codice VBA:
Private Sub MiaTabella_AfterUpdate()
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM ElencoQuery;"
DoCmd.SetWarnings True
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
Set rst2 = CurrentDb().OpenRecordset("ElencoQuery")
Set rst = CurrentDb().OpenRecordset("SELECT MSysObjects.Name " _
    & "FROM MsysObjects WHERE (Left$([Name],1)<>'~') AND " _
    & "(MSysObjects.Type)=5 ORDER BY MSysObjects.Name;")
rst.MoveFirst
Do Until rst.EOF
    Dim MyQueryDef As DAO.QueryDef
    Dim SQL As String
    Set MyQueryDef = CurrentDb().QueryDefs(rst!NAME)
    SQL = MyQueryDef.SQL
    Set MyQueryDef = Nothing
    If InStr(1, SQL, Me!MiaTabella) <> 0 Then
        rst2.AddNew
        rst2!NomeQuery = rst!NAME
        rst2.Update
    End If
    rst.MoveNext
Loop
Set rst = Nothing
Set rst2 = Nothing
Me.Requery
End Sub

A questo punto si deve aprire la maschera di cui sopra e si deve digitare nella casella di testo MiaTabella il nome della tabella di cui si vuole comoscere l'elenco delle queries che la usano: nel corpo della maschera verranno visualizzati i nomi delle queries che usano la tabella in questione; naturalmente se nessuna queries usa tale tabella il corpo della maschera risulterà vuoto.

Il codice VBA di cui sopra fa riferimento alla libreria DAO quindi, se si usa una versione di Access successiva ad Access 97, si deve aggiungere al database i riferimenti a Microsoft DAO 3.6 Object Library.

Nota
Se invece si vuole conoscere l'elenco delle maschere e dei report basati su una determinata tabella, si vada nella Sezione General di questo sito e si legga la FAQ di Lorenzo Coronati e David La Mantia (Sib) intitolata "6.51 Verifica se una tabella o una query è usata in una form o in un report.".


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