私は、MS Access を使用して非常に軽量な CRM ツールを作成しています (MS Access は基本的に唯一のオプションです。これは、人件費以外の費用がかからず、ネットワーク ドライブのスペースを超えるサーバーやインフラストラクチャのサポートがないことを求められたためです)。
私は現在、マネージャーが特定の顧客連絡先タスクを顧客サービス担当者 (CSR) に割り当てることができるタスク割り当てフォームに取り組んでいます。フォームがあります。そのフォームには 9 つの行 (すべての CSR に 1 つ) と 9 つの列 (すべてのタスクに 1 つ) があります。マネージャーは、チェック ボックスに入力して [保存] をクリックすることにより、タスクを割り当てます。このデータは、タスク割り当てのテーブルに保存されます。現在、CSR 名と現在の割り当てのラベルと初期値は、DLookups によってプログラムによって取得されます (コントロール オブジェクトごとに 1 つ (90 行))。割り当ては、"Do While Not r.EOF/r.MoveNext (r はテーブルから設定されたレコード) ループ (別の 90 行) によってテーブルに書き込まれます。
私の問題は、これが私が満足していない多くのがらくたコードを作成したことです。これは簡単に拡張できず、たわごとのように見えます。私が望むのは、データ フィールドの各行 (テキスト ボックスとしての CSR の名前とチェック コントロールとしての 9 つの割り当て) をグループとしてグループ化し、そのグループをプログラムで反復処理できるようにすることです。
私が望むのは、10 個のフィールドの各セットをグループ化し、次のようなことができるようにすることです。
Private Sub Form_Open(cancel As Integer)
Dim db As DAO,Database
Dim r as DAO.Recordset
Dim CSR as TaskGrouping 'Where TaskGrouping is the new group name thing I have created
Set db = CurrentDb
Set r = db.OpenRecordset("tbl_TaskAssignments")
r.MoveFirst
For Each CSR in CSRGrouping
CSR.CSRName = r.Fields("CSRName")
CSR.Task1 = r.Fields("Task1")
CSR.Task9 = r.Fields("Task9")
r.MoveNext 'I am ignoring the case where I need to ensure that r.EOF is not reached.
Next CSR
End Sub