Modules

5.18 Verificare se nel database corrente esiste un determinato oggetto (1)
  Roberto
La funzione che segue serve a verificare se nel database corrente sia presente o meno un determinato oggetto.
Public Function EsisteOggetto(TipoOggetto As String, NomeOggetto As String) As Integer
On Error Resume Next
Dim OggettoTrovato As Integer, CercaOggetto As String, NumOggetto As Integer
Dim db As DAO.Database, t As DAO.TableDef
Dim Q As DAO.QueryDef, C  As DAO.Container
Dim msg As String
OggettoTrovato = False
Set db = CurrentDb()
Select Case TipoOggetto
Case "Tabella"
    CercaOggetto = db.TableDefs(NomeOggetto).name
Case "Query"
    CercaOggetto = db.QueryDefs(NomeOggetto).name
Case Else
    If TipoOggetto = "Maschera" Then
        NumOggetto = 1
    ElseIf TipoOggetto = "Modulo" Then
        NumOggetto = 2
    ElseIf TipoOggetto = "Report" Then
        NumOggetto = 4
    ElseIf TipoOggetto = "Macro" Then
        NumOggetto = 5
    Else
        msg = "Il nome oggetto """ & TipoOggetto & """ non è un valido"
        msg = msg & " argomento per la funzione EsisteOggetto!"
        MsgBox msg, 16, "Funzione EsisteOggetto"
        Exit Function
    End If
    Set C = db.Containers(NumOggetto)
    CercaOggetto = C.Documents(NomeOggetto).name
End Select
If err = 3265 Or CercaOggetto = "" Then
    OggettoTrovato = False
Else
    OggettoTrovato = True
End If
    EsisteOggetto = OggettoTrovato
End Function
Se per esempio voglio verificare se nel database corrente esiste la maschera chiamata MiaForm richiamerò la funzione EsisteOggetto nel seguente modo:
If EsisteOggetto("Maschera", "MiaForms") = True Then
     ' la maschera MiaForm esiste
Else
     ' la maschera MiaForm NON esiste
End If
Come primo argomento nel richiamo della funzione va usata la stringa "Tabella" se l'oggetto da cercare è una tabella, la stringa "Query" se l'oggetto da cercare è una query, la stringa "Maschera" se l'oggetto da cercare è una maschera, la stringa "Report" se l'oggetto da cercare è un report, la stringa "Macro" se l'oggetto da cercare è una macro e la stringa "Modulo" se l'oggetto da cercare è appunto un report.
Il secondo argomento è invece una stringa che contiene il nome dell'oggetto.

Nota
La funzione EsisteOggetto fa riferimanto alla libreria microsoft DAO quindi, se si usa una versione di Access successiva as Access 97 è necessario aggiungere al database i riferimenti a Microsoft DAO 3.6 Object Library.


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