Holen Sie sich alle source-code in der mdb-Datei (msaccess) mit C#/VBScript
Ich würde gerne den gesamten Quellcode von einem Zugang Datenbank (Formulare, Module) ohne Office-interops.
Ich mochte die AllCodeToDesktop()
Funktion finden Sie hier. Allerdings, läuft von innen der mdb Datei.
Was wäre eine VBScript-Datei, lädt die mdb-Datei und führt diese Funktion auf?
- Ich habe einfach nicht diese 'ohne Verwendung von Office' der Beschränkung. Ich verstehe aus deiner Frage, dass Sie wollen, dass jemand den code schreiben für Sie, weil Sie nicht wollen, zu verwenden office-interops? Ich denke, das ist nicht eine Frage, sondern etwas, das Sie würde dafür bezahlen müssen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sparen eine Menge Zeit, gibt es einen Grund, warum du nicht mit dem eingebauten Dokumentierer?
Tools->analysieren->documenter
Oben genannte, hat die Möglichkeit einen Bericht zu erstellen, in der alle code in Formularen, berichten, Modulen und klassenmodulen. Diesen Bericht können Sie senden an word oder sogar als text-Datei gespeichert.
Ich nur erwähnen dies, um zu sparen Sie Zeit und Mühe. Es gibt keine Notwendigkeit, einen code schreiben hier.
mehr Hinweise:
Ich glaube nicht, können Sie dies tun externe. Sie können die Verwendung von ms-access als com-Objekt, und verwenden Sie code, um zu ziehen aus der code als text, aber Sie benötigen den Zugriff auf diesem computer installiert.
Gibt es zwei Ansätze, einer ist die Verwendung der saveastext-Befehl. Dies wird die Ausfuhr jedes Formular, Bericht, Codes etc. als text-Datei (das, was die source-code-add-ins alle verwenden).
Der 2. Ansatz ist der write automation-code. Hier ist der code in native access (VBA), aber Sie genauso gut schreiben Sie diesen code in jeder Sprache, die unterstützt com-Objekte. Der code wird wie folgt Aussehen:
Den obigen code leicht modifiziert Verfahrensweise, oder exportieren Sie den text. Ich denke, mit saveastext ist weniger code, aber dann bekommen Sie die Formulare definition etc, und das wahrscheinlich nicht, was Sie wollen.
Microsoft Office ist erforderlich. Könnte man auch einfügen-Funktion in der MDB gespeichert und von dort aus ausgeführt.
Wenn es für ein repository, möchten Sie vielleicht, zu betrachten, Visual SourceSafe und den Zugriff VSS-addin (der link ist für Access 2003, habe nicht versucht andere Versionen) http://www.microsoft.com/downloads/details.aspx?familyid=2ea45ff4-a916-48c5-8f84-44b91fa774bc&displaylang=en
Ich vermute, dass Access-add-in wird über eine COM-Schnittstelle, die Sie extrahieren konnte die Quelle einigermaßen sauber in der C# - app, wenn Sie wollte diesen Weg gehen. In jedem Fall, wie Robert bemerkt, Office ist noch erforderlich.
Ich bin nur eine unbedeutende Access-Programmierer und kann nicht sagen, dass ich Ihre Frage zu verstehen.
So weit ich erzählen kann, um zu bekommen, was Sie wollen, Sie gehen zu müssen, zu automatisieren Zugriff über COM -- es gibt keinen anderen Weg. Die Routinen dazu sind version-agnostisch und funktioniert in allen Versionen von Access aus zu mindestens 97, solange die Access-version du bist Automatisierung ist aufwärtskompatibel mit den Dateien, die Sie untersuchen (d.h., A2000, werden nicht in der Lage zu prüfen, eine ACCDB und kann (oder auch nicht) geben unzuverlässige Ergebnisse für A2002, A2003 und A2007 MDBs).
Der Schlüssel ist, mit Anwendung.SaveAsText zu speichern Sie alle Ihre code-tragenden Objekten. Dies würde bedeuten, würden Sie wollen, um eine Schleife durch alle Module, Formulare und Berichte und für diejenigen, die mit code-Module, die Ausgabe mit SaveAsText. Für Formulare und Berichte-Sie möchten möglicherweise überprüfen Sie die HasModule-Eigenschaft (obwohl dies nur in design und form view", d.h. das Formular muss offen sein), wenn Sie wollen, um zu überspringen, alle Objekte, die fehlenden Module.
Wenn Sie nicht kümmern, über A97-Kompatibilität, ist es viel einfacher. Sie können CurrentProject.AllForms, CurrentProject.AllReports und CurrentProject.AllModules. Wenn Sie nicht besorgt mit der Differenzierung Formulare/Berichte mit code-Module und solche ohne in dieser Phase, werden Sie nicht brauchen, um Sie zu öffnen, um zu überprüfen Sie die HasModule-Eigenschaft. Sie können stattdessen überprüfen Sie die resultierende exportierte text-Datei. Wenn es kein Modul, das tag CodeBehindForm fehlen werden aus der Ausgabe-Datei.
Aber, es ist sehr Häufig für Formen, ein Modul zu haben, aber keine eigentlichen code. Diese Module werden in der SaveAsText-Ausgabe wie diese:
Option Explicit kann oder kann nicht da sein, und die Option Compare Database ist technisch nicht erforderlich, aber 99% der erstellten Module in Access müssen Sie eine oder beide (nur Datenbanken in Access 2000 mit den Standardeinstellungen fehlt Option Explicit). Code wird gestartet, nachdem die 4 Attribute. Wenn es nur die zwei OPTION-Anweisungen, dann gibt es keinen wirklichen code hinter dem Formular.
Sollten Sie in der Lage zu tun, die COM-Automatisierung von Access aus vbScript, die auf jedem PC mit einer version von Access installiert ist, forwardly kompatibel mit allen MDBs/ACCDBs Sie untersuchen wollen.