Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

kompilierung auf Knopfdruck möglich?

Begonnen von cparmentier, April 27, 2014, 01:50:00

⏪ vorheriges - nächstes ⏩

cparmentier

Hallo,
Ich bin neu hier, arbeite jedoch mit Access seit 1995.
Momentan mit AC2003. Ich habe ca 15 Datenbanken in der Firma im Einsatz. Für globale VBA-Funktionen habe ich eine MDE-DB im Einsatz.
Wenn ich in dieser MDE etwas ändere, muss ich anschießend alle 15 Datenbanken öffnen, und den Code kompilieren.
Jetzt die Frage: Gibt es eine Möglichkeit diese Kompilierung mit einem VBA-Befehl zu starten? Dann ggf diese Funktion in ein Autostart_Komp Makro legen, und dieses per Kommandozeile starten? Mit einer Batchdatei könnte ich dann alle 15 Datenbanken mit einem Klick kompilieren (natürlich wenn ich sie exklusiv öffnen kann)
Vielen Dank ... vielleicht hat schon jemand in dieser Richtung etwas gebastelt.
Gruß
Claude

DF6GL

Hallo und willkommen hier im Forum.

die ganze Sachlage versteh ich nicht:

Wie kannst Du eine MDE-Datei am Code ändern und sie kompilieren wollen?
(Eine "richtige" MDE ist codemäßig und entwurfsmäßig nicht änderbar)
Handelt es sich wirklich um eine mit Access konvertierte (kompilierte) DB?

"habe ich eine MDE-DB im Einsatz."
gibt es nur die eine oder mehrere (verschiedenene) mde-Dateien?


Vermutlich ist aber Deine Situation missverständlich erläutert...




cparmentier

Hallo,
Danke für die Antwort.
Erklärung: Nur die Bibliothek-Datenbank ist eine MDE, alle andere 15 Datenbanken sind MDBs. Alle 15 haben ein Verweis auf die MDE, um deren globalen Funktionen zu nutzen.
Gruß
Claude

DF6GL

Hallo,

ok, und warum willst Du dann die mde kompilieren? Wenn, wie ich vermute, die mde als solche verändert werden soll, dann kann das nur zunächst über die ursprüngliche (originale) MdB-Datei geschehen, indem diese bearbeitet und anschliessend (wieder) in eine neue mde-Datei (mit gleichem Namen) überführt (kompiliert) wird. Diese "neue" mde-Datei muss dann an alle Stellen, wo sie verwendet wird,  kopiert werden.

cparmentier

Hallo,
Ich versuche es noch Mal zu erklären.
Ich habe eine Bibliothek-Datenbank mit globalen Funktionen. Dies ist eine MDE.
In den 15 Benutzer-MDB Datenbanken habe ich ein Verweis auf diese MDE, um globale Funktionen zu nutzen.
Wenn ich eine neue MDE erzeuge (Funktionen erweitert oder optimiert), bzw die MDE durch die neue ersetze, ist der Code in den 15 MDBs sofort dekompliliert. Ich muss daher jede der 15 wieder öffnen, und den VBA Code komplilieren. Es ist ein Geduldspiel, da die Datenbanken im 3-Schicht-Betrieb verwendet werden, und ich nur Feiertage nutzen kann, um alle 15 Datenbanken exklusiv öffnen zu können. Dann brauche ich 30-45 Minuten um alle zu kompilieren. Deshalb suche ich eine schnellere Lösung.
Ist es jetzt verständlicher?
Gruß
Claude

MzKlMu

#5
Hallo,
meiner Meinung nach, ist das extra Kompilieren des Codes der MDB's nicht notwendig. Die erste Verwendung von Code kompiliert automatisch.

Zitat von: Access Hilfe zu kompilierenEs ist zwar empfehlenswert, die Module Ihres Projekts mit den oben beschriebenen Befehlen explizit zu kompilieren, jedoch nicht unbedingt erforderlich. Microsoft Access kompiliert ein Modul, bevor eine darin befindliche Prozedur ausgeführt wird, wenn das Modul noch nicht kompiliert vorliegt.
Gruß Klaus

cparmentier

ok, Danke
Das werde ich bei der nächsten Änderung beobachten.
Gruß
Claude

MzKlMu

Hallo,
ZitatDas werde ich bei der nächsten Änderung beobachten.
das kannst du nicht beobachten, das sieht man im Debugger nicht. Und der Befehl IsCompiled hilft auch nicht.

Hast Du in jedem Modul der MDB's die Option Explicitgesetzt.
Damit wird man zu Variablendeklaration gezwungen, was auch eine Kompilierung erzwingt.
Gruß Klaus

cparmentier

Doch noch eine Frage: Die 15 Datenbank werden mit der Runtime 2003 verwendet. Wird dann auch hier automatisch kompiliert?
Danke
Gruß
Claude

MzKlMu

Hallo,
meiner Meinung nach, wird eine Runtime immer kompiliert.
Hast Du das gelesen mit der Option Explicit, ist die gesetzt, in jedem Modul, auch Formular und Berichtsmodule?
Gruß Klaus

cparmentier

Zitat von: MzKlMu am April 27, 2014, 19:31:05
...Option Explicit, ist die gesetzt, in jedem Modul, auch Formular und Berichtsmodule?
Ja, mache ich grundsätzlich.
Gruß
Claude

ebs17

Mit freundlichem Glück Auf!

Eberhard

cparmentier

Hallo und vielen Dank.
Interessant ist dieser Hinweis:
MDE in MDA umbennen:
ZitatGefahrlos umbenennen ja, den Nachteil der Bibliothekseinbindung umgehen nein.
Den Nachteil kann man umgehen indem man die Bibliothek so verwendet als sei sie ein Addin. Das hat mit der ursprünglichen Strategie die Bibliothek als Verweis einzufügen aber nix mehr zu tun. In der o.g. Lösung wird kein Verweis mehr benötigt, und damit entfällt auch der Zwang zum Neukompilieren.
Werde ich Mal testen ...
Gruß
Claude

cparmentier

Hallo,
Kurzes Feedback: Ich habe bei der letzten Änderung der MDE das Problem, dass eine Datenbank beim Schließen ein offenes Access-Fenster (Runtime) hinterließ. Somit konnte ich die Datenbank nicht mehr exklusiv öffnen, da diese im 3-Schicht-Betrieb verwendet wird. Heute habe ich die User vom Admin rausschmeissen lassen, und danach die Datenbank kompiliert. Jetzt ist das Problem behoben. Also ist automatisches kompliliert bei der ersten Öffnung doch nicht genau das gleiche, wie die Komplilierung des VBA Codes manuel durchzuführen.
Gruß
Claude

MaggieMay

Hallo,
Zitat von: MzKlMu am April 27, 2014, 17:54:13Und der Befehl IsCompiled hilft auch nicht.
wie meinst du das? Ich glaube, ich habe da andere Erfahrungen, und zwar setze ich folgenden Code ein:' Alle Module kompiliert ??
    If Not Application.IsCompiled And SysCmd(acSysCmdRuntime) Then
' Ruft einen versteckten SysCmd-Befehl auf, um alle Module der
' Datenbank zu kompilieren bzw. zu speichern.
            Call SysCmd(504, 16483)
    End If
und denke, der kommt auch gelegentlich zum Einsatz.
ZitatSomit konnte ich die Datenbank nicht mehr exklusiv öffnen
Du solltest eh keine produktiv eingesetzte DB exklusiv (d.h. zur Bearbeitung) öffnen, sondern das Original stets lokal bearbeiten und nach Abschluss der Änderungen und Erweiterungen zur allgemeinen Verwendung bereitstellen.

Freundliche Grüße
MaggieMay