Ich habe also eine Access-Datenbank mit einem Front- und einem Backend. Ich werde es bald an die Benutzer verteilen, aber ich habe keine Kontrolle darüber, wo genau die Dateien auf ihren Computern gespeichert werden. Ich denke jedoch, dass ich darauf zählen kann, dass sie Vorder- und Rückseite in den gleichen Ordner legen.
Wenn das Frontend geöffnet wird, möchte ich sicherstellen, dass die verknüpften Tabellen korrekt mit der Back-End-Datenbank verbunden sind. Ich habe einen Arbeitscode dafür; aber ich weiß nicht, wo ich es hinstellen soll. Wenn sich das Frontend öffnet, wird automatisch ein Menüformular geöffnet (konfiguriert über die Startdialogbox). Ich habe den Code in das OnOpen
-Ereignis gestellt, das ich dachte, bevor alle Daten geladen wurden, aber wenn ich das ausprobiere, bekomme ich eine Nachricht, dass das Back-End nicht gefunden werden kann (es sieht an seinem alten Ort aus) ).
Grundsätzlich, gibt es ein Ereignis, das ich verwenden kann, das ausgeführt wird, bevor irgendwelche Formulare geöffnet haben?
Erstellen Sie wie Matt ein Makro, nennen Sie es "autoexec" und wählen Sie "RunCode" als Makroaktion aus. Das Argument Funktionsname sollte der Name der Funktion sein, die Sie ausführen möchten (und keine Unterroutine), und wenn die Funktion keine Argumente hat, sollten Sie am Ende immer noch () setzen, sonst funktioniert es nicht.
>Ich bevorzuge es im Allgemeinen, ein kleines Formular zu erstellen, das eine Reihe von Überprüfungen durchführt, z. B. das Suchen des Back-Ends usw., und verschiedene Optionen festlegen. Der Code für das offene Ereignis dieses Formulars könnte lauten:
%Vor%Ich behalte eine Tabelle mit Tabellen, die im Front-End verlinkt werden sollen, und wenn irgendwelche fehlen, kann dieses Formular verwendet werden, um den Fehler oder irgendeinen anderen Fehler zu melden.
%Vor%Wenn alles in Ordnung ist, ruft das kleine Formular das Hauptmenü oder Formular auf und der Benutzer sieht das Überprüfungsformular nie. Ich würde dieses Formular auch verwenden, um bei Bedarf eine Passwortabfrage zu öffnen.
Denken Sie darüber nach, bevor Sie Ihr Front-End und Back-End in denselben Ordner legen. Lohnt es sich nicht 2 Ordner zu haben? Was ist mit mehreren Benutzern auf demselben Computer, die auf dieselbe Back-End-Datenbank zugreifen? Wie steht es mit mehreren Benutzern, die über ein Netzwerk auf dieselbe Datenbank zugreifen? Was ist die Notwendigkeit einer Front-End-Back-End-Typologie, wenn Ihre App im Grunde eine Single-User-App ist?
Warum fügen Sie Ihrer App kein Dialogfeld hinzu, falls Ihre Verbindung verloren geht? Sie könnten ein fileDialog-Objekt in Ihrem Code erstellen, das es dem Benutzer ermöglicht, überall in seinem Computer / Netzwerk nach einer * mdb-Datei zu suchen. Es ist dann möglich zu kontrollieren, dass die ausgewählte MDB-Datei alle angeforderten Tabellen enthält und die entsprechenden Links öffnet (ich nehme an, dass Sie den transferDatabase-Befehl verwenden).
Und was ist mit zusätzlichen Tools / Referenzen, die Sie für die Ausführung Ihrer App benötigen, wenn Sie sie an Ihre Endbenutzer verteilen? Standardmäßig zeichnet MS Access die 3 grundlegenden auf:
Wenn Ihre App etwas anderes benötigt, z. B. ADO- oder Office-Objekte (z. B. ADODB.recordset oder Office-Befehlsleisten), müssen Sie die Referenzen für jede Installation manuell hinzufügen, da der endgültige Benutzer nicht geöffnet werden kann das VBA-Fenster und greifen Sie auf das Menü Tools / Referenzen zu.
Wenn Sie Ihre App auf mehreren Computern bereitstellen müssen, rate ich Ihnen daher dringend, ein Bereitstellungstool wie das folgende zu verwenden: Frei . Sie brauchen ein paar Stunden, um es richtig nutzen zu können, aber das Ergebnis ist es wert. Sie können Ihren Kunden ein echtes Installer-Modul geben. Es erstellt Ordner, fügt angeforderte Verknüpfungen hinzu und verwaltet Verweise in der Registrierung des Computers. Dies wird Ihre Installation definitiv schmerzlos machen!
EDIT: der Autoexec-Makro ist definitiv die richtige Lösung für den Aufruf von Code vor jedem Ereignis.
EDIT: Vergessen Sie nicht, dass Ihre Endbenutzer von der Runtime-Version von Access profitieren können, die kostenlos ist!
Wie andere vorgeschlagen haben, würde ich in diesem Fall das AutoExec-Makro verwenden. Wenn Ihr Code, der die verknüpften Tabellen überprüft, derzeit eine Unterkomponente ist, ändern Sie sie in eine Funktion, die TRUE zurückgibt, wenn sie erfolgreich ist. Sie können dann die Spalte "Bedingungen" im AutoExec-Makro verwenden, um die Anwendung mit einem benutzerfreundlichen Fehlerdialogfeld zu schließen, wenn der Link-Tabellencode fehlschlägt. Ihr AutoExec-Makro könnte etwa lauten:
Sie könnten ihnen eine * .BAT-Datei senden, die die Datenbanken nach c: \ temp kopiert (oder den von Ihnen gewählten Ordner. Richten Sie den Link auf diesen Ordner ein, bevor Sie die BAT-Datei erstellen. Zip es und mailen Sie es an sie Sie müssen sich nicht mit dem extra benötigten Code sorgen.
Tags und Links vba ms-access access-vba