Juni 24, 2021, 19:31:43

Neuigkeiten:

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


Klasse wird nicht mehr erkannt, seitdem in separater Datenbank

Begonnen von NoProfi, April 07, 2021, 22:09:29

⏪ vorheriges - nächstes ⏩

NoProfi

Ich habe unter VBA Access meine erste Objekt-Klasse erstellt. in der Projekt-DB habe ich dafür 2 Klassen-Module angelegt. Ein Module mit dem Code für die eigentliche Klasse (Modul clsKlasse) und ein Modul mit dem Code für die Ereignisse (Modul clsEreignisse). Der Code für den Test der Objekt-Klasse befindet sich in einem weiteren Standard-Modul (Modul mdlTest).

Solange sich alle Module in der gleichen DB befinden, funktioniert der Objekt-Test einwandfrei.

Das Erstellen einer Objekt-Klasse macht aber nur Sinn, wenn ich mich bei jeder Anwendung auf das gleiche Modul clsKlasse beziehen kann.

Zu diesem Zwecke habe ich das Modul clsKlasse in einer separaten Objekt-DB gespeichert. Die Module clsEreignisse und mdlTest, die bei verschiedenen Anwendungen auch unterschiedlich sein können, verblieben in der Anwendungs-DB.

Damit man das Modul clsKlasse dann in die jeweilige Anwendungs-DB einbinden kann, habe ich die Objekt-DB zu den Verweisen hinzugefügt.

Obwohl die separate Objekt-DB nun im Projekt-Explorer der Anwendungs-DB erscheint und auch ein Verweis darauf besteht, funktioniert nun der Objekt-Test nicht mehr.

Bei der Instanzierung der Klasse clsKlasse (Dim Objektvariable As New clsKlasse) kommt nun die Fehlermeldung "Benutzerdefinierter Typ nicht definiert".

Was muss ich tun, damit Modul clsKlasse, das sich nun in der separaten Objekt-DB befindet, wieder erkannt wird?

Sollte es notwendig sein, das Modul Klasse nicht als DB, sondern in Form einer Bibliothek einzubinden: Wie erstellt man eine solche Bibliothek unter VBA?

PhilS

Offiziell ist das mit VBA nicht möglich.
Inoffiziell kannst du deine Klasse als Textdatei speichern ("Datei Exportieren" im VBA-Editor), in VBA die Klasse löschen, dann mit einem Texteditor die exportierte Textdatei öffnen, im Kopfbereich der Datei das Attribute VB_Exposed auf True ändern, speichern und dann die Datei wieder in VBA importieren.

Allerdings musst du wahrscheinlich Dim Objektvariable As New Projektname.clsKlasse schreiben.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!