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