Neuigkeiten:

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

Mobiles Hauptmenü

Klassen öffentlich verfügbar machen (public)

Begonnen von datekk, Januar 13, 2019, 16:42:02

⏪ vorheriges - nächstes ⏩

datekk

Hallo,

ich wollte eine Klasse "User" erstellen. Beim einloggen in meine Datenbankanwendung sollte eine SessionUser Klasse von User erstellt werden, welche Informationen wie Name, Vorname, UserId, RollenId usw. in sich vereint, da diese Infos an vielen Stellen in meinem Datenbankprojekt auftauchen. Damit wollte ich einzelne public Variablen umgehen und die schöne Intellisense Hilfe haben, welche ich z.B. auch nicht mit einem Collection Objekt habe.

Im Login-Formular habe ich im Kopf des Formulars also folgendes erstellt:


public SessionUser as New User


Die Initialisierung der Klasse klappt. Leider scheint die Klasse aber nur Formular weit Gültigkeit zu besitzen. Sind mit VBA keine öffentlichen Klassen möglich?

LG
datekk
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

PhilS

Zitat von: datekk am Januar 13, 2019, 16:42:02
Die Initialisierung der Klasse klappt. Leider scheint die Klasse aber nur Formular weit Gültigkeit zu besitzen. Sind mit VBA keine öffentlichen Klassen möglich?
Doch klar, aber wie alle Public-Variablen, müssen diese in einem Modul definiert werden, damit Sie überall verfügbar sind. Andernfalls sind sie nur eine Eigenschaft des Formulers, welches selbst ja eine Klasse(ninstanz) ist.
Ich würde auch gleich eine Public Property (Stichwort: Singleton) erstellen, die dir eine Instanz der Klasse liefert. Mit Public xyz As New Klasse hast du zwar immer eine gültige Instanz, aber keine Garantie, dass diese auch korrekt initialisiert ist.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

datekk

Top... Ja, ich hatte es in einer Formularklasse erstellt. Jetzt läuft das. :)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps