| 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.". |