Custom build settings

Simple. Fast. Extensible. Intuitive!

Introducing the new version (V2) of dynamic Custom Settings – a smart solution that shines with full IntelliSense support, intuitive operation, and flexible extensibility. All without additional coding effort!


✨ What's new?

The revised solution now offers:

✅ IntelliSense in all settings calls
✅ Enum-based operation for maximum clarity and accuracy
✅ Easy creation of custom settings – without a single line of code!
✅ Read, Create, Change, and Delete – all integrated
✅ Frontend, backend, and user settings – directly supported
✅ Individual user settings – each user can save their own values
✅ New tables? No problem – can be integrated with minimal effort

 

👤 Individual user settings

Want each user to save their own preferences? No problem. The framework supports user-based settings via the tblUser table, e.g.: last view opened, user color, default search filter. - Simply enter the user ID when calling up – done!

  

🧠 How does it work?

The system is based on tables and three powerful modules:

🗃️ The tables

  • tblFrontend    Settings for the front end (client-specific)
  • tblBackend     Global settings (for all users)
  • tblUser           Individual user settings

📁 modHelper_Settings

This module contains all functions for processing settings:

  • settingCreate:          Creates new entries
  • settingRead:            Reads settings securely depending on the data type
  • settingChange:        Changes existing settings in a type-safe manner
  • settingDelete:          Removes specific entries

📁 modHelper_Enumeration

This module automatically handles enums, which provide IntelliSense. Here, new enum entries can be added, renamed, and deleted via code—even dynamically at runtime.

 📁 modHelper_SQL

A proven module from a previous article—provides secure, type-compliant SQL strings with cSQL().

 

🔄 Data storage & type conversion

A special highlight of the system is the uniform storage of all values: All settings are stored internally as strings. When retrieved with settingRead, a type conversion to the originally defined data type takes place automatically. This data type information is also stored in the SettingType column and ensures that the return value is always correctly typed.

 

🤖 IntelliSense for settings?!

Yes! - Thanks to the use of enums (EnumSettingName, EnumTable, EnumDataType), IntelliSense support is directly available for every call, e.g., settingRead(...), without the need for lookup or the risk of typos.

You only need to specify the enum value – the rest is automatically assigned correctly.

 

🧪 Example: It's that simple:

Creating a new setting in the frontend table:
Here, the setting name must be passed as a string, and the settingCreate function then creates an entry as an enum. This allows IntelliSense to be used later.
settingCreate “Theme”, dtString, “Dark”, tblFrontendsetting
Create “Items”, dtInteger, 22, tblFrontend

Changing a setting in the frontend table:
settingChange Theme, dtString, “Light”, tblFrontendsetting
Change Items, dtLong, 444444, tblFrontend

Reading a setting from the frontend table:
Debug.Print settingRead(Theme, tblFrontend)
Debug.Print settingRead(Items, tblFrontend)

Deleting a setting in the frontend table:
settingDelete(Theme, tblFrontend)
settingDelete(Items, tblFrontend)

User table:
settingCreate “Active”, dtBoolean, True, tblUser, 1
settingChange Active, dtBoolean, False, tblUser, 1
Debug.Print settingRead(Active, tblUser, 1)
settingDelete(Active, tblUser, 1)

 

➕ Add new tables? - It's that easy:

1. Create a new table: e.g. tblInvoiceSettings (simply copy an existing table)2. Add an enum entry to enumTable3. Adjust the GetTableName() function

All functions (Create, Read, Change, Delete) work without any additional code. This means you can expand your system in a modular fashion without having to modify the core code.

 

🚀 Advantages

✅ Ready to use in no time
✅ No more hard-coded SQL
✅ IntelliSense prevents errors in names and types
✅ Settings depending on the area of application (front end, back end, user)

 

⚠️ Are there any disadvantages?

🔸 Important: If an enum is deleted but still used in the code (e.g., in settingRead, settingChange, or settingDelete), this will cause an error during compilation! However, this is a good safety mechanism, as it makes incorrect or outdated settings calls immediately visible and correctable.

 

💬 Conclusion

This new version of Custom Settings with IntelliSense is a huge step toward professional, maintainable, and modern Access development. No cryptic SQLs. No errors due to names. Once integrated, you'll never want to do without it again!

Do you develop a lot with Access? Then give it a try—I look forward to your feedback or ideas for additional features!



You will find the detailed description and all instructions directly in the code - well documented as usual.


   DOWNLOAD  
Version: 2.0 (27 JUL 25)

If you find it helpful and recognize its value, I would appreciate a small donation to reflect the effort and benefit it provides you.
PayPal A small donation