次のシナリオのベスト プラクティス/ソリューションを探しています。
「global_settings」の構成を可能にするマルチユーザー ms アクセス データベースがあります。これらの設定は、すべてのユーザーに適用されます。このデータは現在、テーブル 'tbl_global_settings' に保存されています。(個々のものを処理するためのテーブル user_settings があります)
現在、テーブルの構造は、特定の設定を表すフィールド名を持つ単一のレコードです (ひどい、私は知っています)。例
tbl_global_settings.reminders_red = "7"
tbl_global_settings.reminders_yellow = "15"
これらの値は、システム リマインダーの条件付き書式の有効期限に使用されます。リマインダーの期限が 15 日以内の場合は黄色になり、期限が 7 日以内の場合は赤色になります。
データベースがロードされると、テーブル tbl_global_settings のすべてのフィールドを含む frm_global_settings という隠しフォームがロードされます。これらは、フォーム フィールドを参照することにより、必要に応じて簡単にアクセスできます。
これはほぼ完璧に機能します。しかし、このシステムがここ数年で成長するにつれて、フィールドの数が増え (60 以上)、これは最善の解決策とは思えません。
これを、キー、パラメーター スタイルのアプローチを使用して、よりスキニーなテーブルに移動することを検討していました。ただし、MS Access で DLookup() を使用すると、非効率性が絶えず爆発するように思われるため、これは私にとって懸念事項です。例:
Key | Paramater
---------------------------------
reminders_red | 7
reminders_yellow | 14
値が変更されることはめったにありませんが、頻繁に呼び出されます。起動時にこのデータをグローバル変数またはグローバル配列にロードすることについて誰かコメントできるかどうか疑問に思っていましたか? 例:
Public remindersRed As Integer
Public remindersYellow As Integer
remindersRed = nz(Dlookup("parameter","global_settings", "[key] = '" & "reminders_red" & "'"))
etc.
ありがとうございました