MS Access - 分组字段以便在VBA中更好地控制

时间:2013-10-29 12:25:37

标签: vba ms-access ms-access-2010

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

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

1 个答案:

答案 0 :(得分: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

让我知道。