1

我正在使用 MS Access 创建一个非常轻量级的 CRM 工具(MS Access 基本上是唯一的选择,因为我被要求在没有超出人工成本的情况下这样做,并且除了网络驱动器上的空间之外没有服务器或基础架构支持)。

我目前正在处理任务分配表,经理可以将特定的客户联系任务分配给客户服务代表 (CSR)。我有一个表格。在该表格上有九行 - 每个 CSR 一个 - 和 9 列 - 每个任务一个。经理通过填写复选框然后单击保存来分配任务。然后将此数据保存到任务分配表中。现在,CSR 名称和当前分配的标签和初始值由 DLookups 以编程方式提取 - 每个控制对象一个(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
4

1 回答 1

0

想想 2 个表,tblManagers(键 IDManager,自动编号)和 tblTask​​s(键 IDTask,自动编号)怎么样?

表格可以很容易地更新添加或删除项目。两张表之间没有关系(据我了解)。

第三个表是 tblSelectedTasks,它可能是您的选择表单的来源。在此表中,您推动每个经理的选择。该表有两个外键Manager_ID和Task_ID,与上表中的键相关,还有一个键IDSelectedTask(Autonumber)。

当您以经理身份登录时,您定义 Manager_ID 的键值以写入所选任务的新记录。组合框可以显示您可以选择的任务。它从 tblTask​​s 中选择值,并绑定到 Task_ID。此表可以有一个状态,您可以使用它来过滤您的任务及其完成状态。

扫描选定任务、经理或任务的循环将非常短,因为它的形式为

Dim rs as DAO.Recordset
dim strSQL as string

strSQL = "Select ... FROM ... WHERE ..."
Set rs = Currentdb.OpenRecordset(strSQL, dbOpenDynaset)

do while not rs.EOF

  <your code here>

  rs.movenext
loop

rs.close
set rs = nothing

让我知道。

于 2015-01-20T08:52:57.360 回答