Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Datenbankeigenschaften - Workaround
zurück: Zeitstrahl-Darstellung von Bereichen in Endlos-Formularen weiter: Grundlagen zum Arbeiten mit DAO.Recordsets 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
Rookie71
wurschtel in VBA seit Access 97


Verfasst am:
21. Feb 2014, 01:03
Rufname: Stefan
Wohnort: Hameln


Datenbankeigenschaften - Workaround - Datenbankeigenschaften - Workaround

Nach oben
       Version: Office 2003

Moin,

nachdem ich jetzt, sage und schreibe, einen ganzen Tag darauf verwendet habe, eine Problemstellung zu lösen, möchte ich sie Euch nicht vorenthalten.

Problemstellung:
Eine Anwendung hat 8 Backends, alle BE's sind offen und sollen nun durch die Eigenschaften (Ausblendung db-Fenster usw.) "geschützt" werden. Dummer Weise sind in einigen der BE's die Verweise fehlerhaft bzw. ist der Verweis auf ADO da aber nicht der auf DAO.
Erschwerend kommt hinzu, dass diese Anwendung auf mehreren Clients vorliegt, und die BE's über eine MYSQL-DB repliziert werden. D.h. also 8 DB's pro Client müssen entsprechend angepasst werden, wobei die Clientzahl derzeit bei 8 liegt, Tendenz steigend.

Gedanken:
Erzeugung einer DB, die die nötigen Komponenten enthält, um diesen "Schutz" zu realisieren (Eigenschaften ändern, Formular mit Möglichkeit die Eigenschaften zurück zu setzen. Verteilung der db und anstarten, danach werden die Komponenten kopiert und in dem jeweiliegen BE die Funktion zum Ändern der eigenschaft aufgerufen.

Umsetzung:
- DB erzeugt
- zu kopierende Komponenten als Duplikate erzeugt
- Da die BE's zwar auf unterschiedlichen Laufwerken liegen können aber immer das selbe Unterverzeichnis benutzen, kann der Pfad über problemlos ermittelt werden.
=> Pfad ermitteln
=> Komponenten über Transferdatabase kopieren
=> Verweise über application in dem BE über die Änderungs-DB setzen
=> Function/Sub zum Ändern der Eigenschaften starten
=> BE beenden und weiter zum Nächsten

Fehler, der mich an den Rand des Wahnsinns brachte:
Problem war vor Allem der fehlende Verweis auf DAO. Lösungsansatz war, die Verweise auszulesen, ADO zu löschen und danach DAO und ADO zu setzen, um den Verweis von DAO über dem von ADO zu haben.
Code:
Public Function ADOEntfernenDAOSetzen()
    Dim appAcc As Access.Application
    Dim rs As DAO.Recordset
    Dim BEPFad As String
    Dim AktPfad As String
    Dim EinzelBE As String
   
    On Error Resume Next
    For i = 1 To Application.References.Count
        If Application.References(i).Name Like "*ado*" Then
            NameADO = Application.References(i).Name
            PfadADO = Application.References(i).FullPath
          ElseIf Application.References(i).Name Like "*dao*" Then
            NameDAO = Application.References(i).Name
            PfadDAO = Application.References(i).FullPath
        End If
    Next i
    BEPFad = Application.CurrentProject.Path & "\BE-Dateien\"
    AktPfad = Application.CurrentProject.FullName
    Set rs = CurrentDb.OpenRecordset("Tab_Install_Konfiguration" _
                                   , dbOpenDynaset)
    If Not rs.BOF And Not rs.EOF Then
        rs.MoveFirst
        Do Until rs.EOF
            EinzelBE = BEPFad & rs!BEName
            If Nz(Dir(EinzelBE), 0) <> 0 Then
                Set appAcc = New Access.Application
                appAcc.OpenCurrentDatabase EinzelBE
                appAcc.References.Remove References(NameADO)
                appAcc.References.Remove References(NameDAO)
                appAcc.References.AddFromFile PfadDAO
                appAcc.References.AddFromFile PfadADO
                appAcc.CloseCurrentDatabase
                appAcc.Quit acQuitSaveAll
                Set appAcc = Nothing
            End If
            rs.MoveNext
        Loop
    End If
    rs.Close
    Set rs = Nothing
End Function
Die Function brachte nicht das gewünschte Ergebnis, egal was ich auskommentiert habe... löschen von ADO und nur setzen von DAO, Fehlerbehandelung, etc.

Das anschließende kopieren der Komponenten klappte, allerdings lief der Aufruf der Schutz-Function
Code:
    appAcc.Run "BEDatenbankSperren"
in Fehler, weil der Verweis fehlte.

Die Lösung war einfach und simpel:
Statt die Verweise über die Änderungs-DB zu löschen und zu setzen, habe ich die Löschung (setzen funktionierte ja, nur war die Reihenfolge fehlerhaft) in das sperrungsmodul des BE's verlagert, dass ja nach dem Kopieren aufgerufen wird. Siehe da, alles läuft ohne Probleme, obwohl 8 applications erzeugt und geschlossen werden.

Der Grund...
... warum ich hier poste ist, dass ich Anderen in der gleichen situation eine Hilfestellung geben möchte und natürlich die Frage, ob es eine bessere/elegantere Lösung gibt.

Gruß Stefan
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 Formulare: Geteiltes Formular im Unterformular oder workaround dazu? 1 Moppele 977 11. Dez 2011, 12:05
kyron9000 Geteiltes Formular im Unterformular oder workaround dazu?
Keine neuen Beiträge Access Formulare: Endlosformular mit Unterformular: Workaround? 0 cmk 247 10. März 2010, 10:19
cmk Endlosformular mit Unterformular: Workaround?
Keine neuen Beiträge Access Programmierung / VBA: Workaround zu NamedPipes 0 FrankTheFox 335 23. Mai 2007, 12:04
FrankTheFox Workaround zu NamedPipes
Keine neuen Beiträge Access Tabellen & Abfragen: Workaround bei <> Null? 7 JTR 571 07. Jun 2004, 15:21
lothi Workaround bei <> Null?
 

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