Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Existenz von Objekten
zurück: Excel-Funktion MAX, MIN, ... weiter: Ähnliche Namen vergleichen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
06. Aug 2007, 21:36
Rufname: Peter

Existenz von Objekten - Existenz von Objekten

Nach oben
       Version: Office 2003

Hallo Smile

Oft fragt sich bei der Entwicklung von Access-Anwendungen, ob ein bestimmtes Objekt existiert. Zum Beispiel bevor man es löschen möchte. Oder bevor man es neu erstellen möcht. Oder in vielen anderen Situationen.

Auflistungen durchlaufen oder Fehler Provozieren und Auffangen
Die meisten Beispiele verzichten aufs durchlaufen aller Items einer Auflistung. Sie greifen auf eine Eigenschaft zu und provozieren damit einen Fehler bei Nichtexistenz, der dann aufgefangen wird.
Bei Access wäre in fast allen Fällen auch ein durchlaufen aller Items möglich, da die Auflistungen sehr konsequent umgesetzt sind. Bei den Userforms und vielen Auflistungen in Excel oder Word klappt das nur mit der Provokation von Fehlern, weil man häufig die Items nicht mit der Nummer ansprechen kann.
Über Hinweise, welche Methode schneller ist würde ich mich freuen.

Fragen, Ergänzungen, Verbesserungen
Hier gebe ich einige Code-Beispiele wie man das machen kann. Für Ergänzungen, Abkürzungen und Verbesserungen bin ich wie immer sehr dankbar.
Fragen und Anregungen bitte in:
Existenz von Objekten - Nachgefragt

Viele Grüße
Peter


Zuletzt bearbeitet von faßnacht(IT); am 06. Aug 2007, 22:03, insgesamt 2-mal bearbeitet
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
06. Aug 2007, 21:41
Rufname: Peter


Existiert ein Hauptformular / Parent - Existiert ein Hauptformular / Parent

Nach oben
       Version: Office 2003

Manchmal möchte man ein Formular eigenständig oder als Unterformular öffnen. Bestimmte Funktionen müssen dann prüfen ob es ein Hauptformular gibt, bevor sie darauf zugreifen.
Dazu dient folgende Funktion:
Code:
Function ExistParent(frmAktuell As Access.Form) As Boolean
On Error GoTo err_ExistProp
    Dim blnErgebnis As Boolean, strDummy As String
   
    blnErgebnis = False
    strDummy = frmAktuell.Parent.Name
    blnErgebnis = True
err_ExistProp:
    ExistParent = blnErgebnis
End Function
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
06. Aug 2007, 21:44
Rufname: Peter

Existiert eine bestimmte Eigenschaft / Property - Existiert eine bestimmte Eigenschaft / Property

Nach oben
       Version: Office 2003

Stellen wir uns vor, wir möchten alle Textfarben in einem Formular blau machen. Dann könnten wir alle Controls durchlaufen und die Farbe ändern. Das geht aber nur bei Steuerelementen, die eine Eigenschaft Textfarbe / ForeColor besitzen. Und die kann man so prüfen:
Code:
Function ExistProp(objPruefen As Object, strProp As String) As Boolean
On Error GoTo err_ExistProp
    Dim blnErgebnis As Boolean, strDummy As String
   
    blnErgebnis = False
    strDummy = objPruefen.Properties(strProp).Name
    blnErgebnis = True
err_ExistProp:
    ExistProp = blnErgebnis
End Function
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
06. Aug 2007, 21:54
Rufname: Peter

Existenz von Tabellen und Abfragen - Existenz von Tabellen und Abfragen

Nach oben
       Version: Office 2003

Die Existenz in Tabellen und Abfragen ist ja immer interessant, besonders wenn man in beliebigen Datenbanken prüfen kann. Das Beispiel ist für die Verwendung der DAO-Schnittstelle geschrieben.
bTabelle - sei TRUE, wenn man auf die Existenz eine Tabelle prüfen möchte, FALSE für Abfragen.
strObjekt - sei der Name der Tabelle oder Abfrage
dbParam - ist Optional. Die aktuelle Datenbank oder eine beliebige andere DAO-Datenbank.
Code:
Function ExistTAbfrageDAO(blnTabelle As Boolean, strObjekt As String, _
                          Optional ByVal dbParam As DAO.Database) As Boolean
On Error GoTo Err_ExistTAbfrageDAO
    Dim strDummy As String
    Dim blnErgebnis As Boolean
   
    blnErgebnis = False
    If dbParam Is Nothing Then
        Set dbParam = CurrentDb 'GetDaoDB ersetzt Edit by Willi Wipp
    End If
    If blnTabelle Then
        strDummy = dbParam.TableDefs(strObjekt).Name
      Else
        strDummy = dbParam.QueryDefs(strObjekt).Name
    End If
    blnErgebnis = True
End_ExistTAbfrageDAO:
    ExistTAbfrageDAO = blnErgebnis
    Set dbParam = Nothing
    Exit Function
Err_ExistTAbfrageDAO:
    Select Case Err.Number
      Case 3265
        Resume End_ExistTAbfrageDAO
      Case Else
        MsgBox "Fehler: " & Err.Number & vbNewLine & Err.Description, _
               vbInformation, "Fehler in Funktion: ExistTAbfrageDAO"
        Resume Err_ExistTAbfrageDAO
    End Select
End Function
Beispiele für die Verwendung:
Code:
Function ExistTabelleDAO(strTabelle As String, _
                         Optional ByVal dbParam As DAO.Database) As Boolean
    ExistTabelleDAO = ExistTAbfrageDAO(True, strTabelle, dbParam)
    Set dbParam = Nothing
End Function

Function ExistAbfrageDAO(strAbfrage As String, _
                         Optional ByVal dbParam As DAO.Database) As Boolean
    ExistAbfrageDAO = ExistTAbfrageDAO(False, strAbfrage, dbParam)
    Set dbParam = Nothing
End Function


Zuletzt bearbeitet von faßnacht(IT); am 06. Aug 2007, 22:19, insgesamt einmal bearbeitet
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
06. Aug 2007, 22:14
Rufname: Peter


Existenz von Objekten - Existenz von Objekten

Nach oben
       Version: Office 2003

Existiert ein bestimmtes Objekt in einer beliebigen Datenbank ?
Mit der folgenden Fuktion kann man das ziemlich allgemein beantworten. Diesmal habe ich es umgesetzt indem alle Objekte schön brav durchlaufen werden. Also ohne eine Fehler zu provozieren und dann aufzufangen.
Auch hier ist die Verwendung des DAO-Zugriffs Voraussetzung.

Leider konnte ich mir die Reihenfolge und genaue Bezeichnung der Container nicht richtig merken. Darum habe ich mir eine Funktion gemacht die mir immer den richtigen Kontainer zurückgab:
Code:
Function GetContainer(varName As Variant, _
                      dbParam As DAO.Database) As DAO.Container
    Select Case varName
      'Databases
      Case "Databases", "0", "Datenbanken"
        Set GetContainer = dbParam.Containers("Databases")
      'Forms
      Case "Forms", "Formulare", "1"
        Set GetContainer = dbParam.Containers("Forms")
      'Modules
      Case "Modules", "Module", "2"
        Set GetContainer = dbParam.Containers("Modules")
      'Relationships
      Case "Relationships", "Beziehungen", "3"
        Set GetContainer = dbParam.Containers(3)
      'Reports
      Case "Reports", "Berichte", "4"
        Set GetContainer = dbParam.Containers("Reports")
      'Scripts
      Case "Scripts", "Makros", "5"
        Set GetContainer = dbParam.Containers("Scripts")
      'SysRel
      Case "SysRel", "6", "Beziehungen"
        Set GetContainer = dbParam.Containers("SysRel")
      'Tables
      Case "Tables", "Tabellen", "7"
        Set GetContainer = dbParam.Containers("Tables")
      Case Else
        Set GetContainer = Nothing
    End Select
End Function
Und so lasse ich mir sagen, ob ein bestimmtes Objekt in einer vorgegeben Datenbank vorhaden ist:
Code:
Function ExistObjekt(strName As String, varTyp As Variant, _
                     Optional dbParam As DAO.Database) As Boolean
    Dim intObjekt As Integer, blnNothing As Boolean, blnErgebnis As Boolean
    Dim ctrKontainer As DAO.Container
   
    'Aktuelle Datenbank öffnen, wenn keine übergeben wurde.
    If dbParam Is Nothing Then
        blnNothing = True
        Set dbParam = CurrentDb
    End If
    blnErgebnis = False
    Set ctrKontainer = GetContainer(varTyp, dbParam)
    If Not ctrKontainer Is Nothing Then
        With ctrKontainer
            'Alle Objekte im Container durchlaufen
            For intObjekt = 0 To .Documents.Count - 1
                If strName = .Documents(intObjekt).Name Then
                    blnErgebnis = True
                End If
            Next intObjekt
        End With
    End If
    ExistObjekt = blnErgebnis
    'Aufräumen
    Set ctrKontainer = Nothing
    If blnNothing Then
        Set dbParam = Nothing
    End If
End Function
Und ein paar einfache Anwendungsbeispiele:
Code:
Function ExistForm(strForm As String, _
                   Optional dbParam As DAO.Database) As Boolean
    ExistForm = ExistObjekt(strForm, "Forms", dbParam)
End Function

Function ExistModule(strModule As String, _
                     Optional dbParam As DAO.Database) As Boolean
    ExistModule = ExistObjekt(strModule, "Modules", dbParam)
End Function

Function ExistReport(strReport As String, _
                     Optional dbParam As DAO.Database) As Boolean
    ExistReport = ExistObjekt(strReport, "Reports", dbParam)
End Function

Function ExistMakro(strMakro As String, _
                    Optional dbParam As Database) As Boolean
    ExistMakro = ExistObjekt(strMakro, "Scripts", dbParam)
End Function
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage zur Ermittlung der Existenz 2 Evilmagic 59 27. Jun 2013, 14:04
Evilmagic Abfrage zur Ermittlung der Existenz
Keine neuen Beiträge Access Programmierung / VBA: Collection - Objekte als Eigenschaften von anderen Objekten 3 HansImGlueck 80 29. Mai 2013, 01:07
GastAusBerlin Collection - Objekte als Eigenschaften von anderen Objekten
Keine neuen Beiträge Access Hilfe: Access 2010: Löschen von Objekten ist deaktiviert 7 BrauerFritz 1170 03. Aug 2012, 12:54
SGast Access 2010: Löschen von Objekten ist deaktiviert
Keine neuen Beiträge Access Tabellen & Abfragen: Versustfreies kopieren von Objekten in neue DB 9 sk42 192 26. Aug 2011, 21:20
Nouba Versustfreies kopieren von Objekten in neue DB
Keine neuen Beiträge Access Programmierung / VBA: Auslesen der echtenBeschreibung von Access 2003 Objekten VBA 0 Gastnh 903 09. Feb 2011, 15:18
Gastnh Auslesen der echtenBeschreibung von Access 2003 Objekten VBA
Keine neuen Beiträge Access Programmierung / VBA: Ordner auf Existenz Überprüfen 21 Thomas85 2032 01. Okt 2009, 12:01
Insanctus Ordner auf Existenz Überprüfen
Keine neuen Beiträge Access Programmierung / VBA: Eigenschaften von Objekten in Sub routine 19 Mave 1204 04. Sep 2009, 10:30
Mave Eigenschaften von Objekten in Sub routine
Keine neuen Beiträge Access Programmierung / VBA: Wie rufe ich subroutinen in unterschiedlichen Objekten auf? 3 Neuling222 452 08. Okt 2008, 06:36
derArb Wie rufe ich subroutinen in unterschiedlichen Objekten auf?
Keine neuen Beiträge Access Formulare: Reihenfolge von Objekten auf der Oberfläche ändern 3 Freeman_6 2486 29. Apr 2008, 19:49
Gast Reihenfolge von Objekten auf der Oberfläche ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Bibliothek - 2 Typen von Objekten 4 Freudi 554 15. Aug 2007, 13:51
Freudi Bibliothek - 2 Typen von Objekten
Keine neuen Beiträge Access Hilfe: Existenz von Objekten prüfen - Nachgefragt 0 faßnacht(IT); 1207 06. Aug 2007, 21:37
faßnacht(IT); Existenz von Objekten prüfen - Nachgefragt
Keine neuen Beiträge Access Formulare: Existenz von Steuerelement im Unterformular 5 Micha_S 1055 23. Jul 2007, 15:58
Micha_S Existenz von Steuerelement im Unterformular
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML CSS