Custom build settings
Einfach. Schnell. Erweiterbar. Intuitiv!
Ich präsentiere die neue Version (V2) der dynamischen Custom Settings – eine smarte Lösung, die mit voller IntelliSense-Unterstützung, intuitiver Bedienung und flexibler Erweiterbarkeit glänzt. Alles ohne zusätzlichen Code-Aufwand!
✨ Was ist neu?
Die überarbeitete Lösung bietet nun:
✅ IntelliSense in allen Settings-Aufrufen
✅ Enum-basierte Bedienung für höchste Klarheit & Tippfehlerfreiheit
✅ Einfache Erstellung eigener Settings – ohne eine einzige Codezeile!
✅ Read, Create, Change und Delete – alles integriert
✅ Frontend-, Backend- und User-Settings – direkt unterstützt
✅ Individuelle User-Settings – jeder User kann eigene Werte speichern
✅ Neue Tabellen? Kein Problem – mit minimalem Aufwand integrierbar
👤 Individuelle User-Einstellungen
Du möchtest, dass jeder User eigene Voreinstellungen speichert? Kein Problem. Das Framework unterstützt User-basierte Settings über die Tabelle tblUser, z. B.: letzte geöffnete Ansicht, Benutzerfarbe, Standard-Suchfilter. - Einfach beim Aufruf die UserID mitgeben – fertig!
🧠 Wie funktioniert’s?
Die Grundlage des Systems bilden die Tabellen und drei mächtige Module:
🗃️ Die Tabellen
- tblFrontend Einstellungen für das Frontend (Client-spezifisch)
- tblBackend Globale Einstellungen (für alle Nutzer)
- tblUser Individuelle User Settings
📁 modHelper_Settings
Dieses Modul enthält alle Funktionen zur Verarbeitung von Einstellungen:
- settingCreate: Erstellt neue Einträge
- settingRead: Liest Settings je nach Datentyp sicher aus
- settingChange: Ändert vorhandene Einstellungen typensicher
- settingDelete: Entfernt gezielt Einträge
📁 modHelper_Enumeration
Dieses Modul sorgt für den automatischen Umgang mit Enums, welche für IntelliSense sorgen. Hier können per Code neue Enum-Einträge Hinzugefügt, Umbenannt sowie Gelöscht werden – und das sogar dynamisch zur Laufzeit.
📁 modHelper_SQL
Ein bewährtes Modul aus einem früheren Artikel – sorgt mit cSQL() für sichere, typkonforme SQL-Strings.
🔄 Datenspeicherung & Typumwandlung
Ein besonderes Highlight des Systems ist die einheitliche Speicherung aller Werte: Alle Einstellungen werden intern als String gespeichert. Beim Abrufen mit settingRead erfolgt automatisch eine Typkonvertierung in den ursprünglich definierten Datentyp. Diese Daten-Typ-Information wird in der Spalte SettingType mitgespeichert und sorgt dafür, dass der Rückgabewert immer korrekt typisiert ist.
🤖 IntelliSense für Settings?!
Ja! - Dank der Verwendung von Enums (EnumSettingName, EnumTable, EnumDataType) steht für jeden Aufruf z. B. settingRead(...) die IntelliSense-Unterstützung direkt zur Verfügung – ganz ohne Nachschlagen oder Risiko von Tippfehlern.
Du gibst nur den Enum-Wert an – der Rest wird automatisch korrekt zugeordnet.
🧪 Beispiel: So einfach ist’s:
Erstellen eines neuen Settings in der Frontend Tabelle:
Hier muss die Settingbezeichnung als String übergeben werden, die Funktion settingCreate erstellt dann einen Eintrag als Enum. Damit später die Intelisense verwendet werden kann.
settingCreate "Theme", dtString, "Dark", tblFrontend
settingCreate "Items", dtInteger, 22, tblFrontend
Ändern eines Settings in der Frontend Tabelle:
settingChange Theme, dtString, "Light", tblFrontend
settingChange Items, dtLong, 444444, tblFrontend
Lesen eines Settings aus der Frontend Tabelle:
Debug.Print settingRead(Theme, tblFrontend)
Debug.Print settingRead(Items, tblFrontend)
Löschen eines Settings in der Frontend Tabelle:
settingDelete(Theme, tblFrontend)
settingDelete(Items, tblFrontend)
User Tabelle:
settingCreate "Active", dtBoolean, True, tblUser, 1
settingChange Active, dtBoolean, False, tblUser, 1
Debug.Print settingRead(Active, tblUser, 1)
settingDelete(Active, tblUser, 1)
➕ Neue Tabellen hinzufügen? - So einfach geht’s:
- Neue Tabelle anlegen: z. B. tblInvoiceSettings (Einfach eine vorhanden Tabelle kopieren)
- Enum-Eintrag in enumTable hinzufügen
- Funktion GetTableName() anpassen
Alle Funktionen (Create, Read, Change, Delete) funktionieren ohne weiteren Code. Du kannst dein System also modular erweitern, ganz ohne Eingriff in den Kerncode.
🚀 Vorteile
✅ Blitzschnell einsatzbereit
✅ Kein hartcodiertes SQL mehr
✅ IntelliSense verhindert Fehler bei Namen und Typen
✅ Settings je nach Anwendungsbereich (Frontend, Backend, User)
⚠️ Gibt es Nachteile?
🔸 Wichtig: Wird ein Enum gelöscht, aber im Code weiterhin verwendet (z. B. in settingRead, settingChange oder settingDelete), führt dies beim Kompilieren zu einem Fehler! Dies ist jedoch ein guter Sicherheitsmechanismus, da dadurch fehlerhafte oder veraltete Settings-Aufrufe direkt sichtbar und korrigierbar sind.
💬 Fazit
Diese neue Version der Custom Settings mit IntelliSense ist ein riesiger Schritt in Richtung professionelle, wartbare und moderne Access-Entwicklung. Keine kryptischen SQLs. Keine Fehler durch Namen. Einmal integriert – nie wieder darauf verzichten!
Du entwickelst viel mit Access? Dann probier’s aus – ich freu mich auf dein Feedback oder Ideen für weitere Funktionen! 🚀
Die ausführliche Beschreibung und alle Hinweise findet ihr direkt im Code – wie gewohnt gut dokumentiert.
DOWNLOAD
Version:2.0
