从单一列表创建组合表

问题描述 投票:0回答:1
在 MS Access 中,我试图通过允许用户将一组人指定为单个列表来实现高效的数据输入,然后将其推断为涵盖配对组合范围的完整记录列表(而不是单独输入这些记录) ,排除匹配对。

例如,在给定日期的某个事件中同时观察到 4 个不同的 Person_ID。我希望用户能够输入所有相关人员的列表,以及日期和其他属性;

人员 |链接类型 |日期

    Person_ID1 |观察到 |日期
  • Person_ID2 | ” | “
  • Person_ID3 | ” | “
  • Person_ID4 | ” | “
我希望宏/VBA 将其推断为类似于下面的表;

人员1 |链接类型 |人物2 |日期

    Person_ID1 |观察到 |人_ID2 |日期
  • Person_ID1 |观察到 |人_ID3 |日期
  • Person_ID1 |观察到 |人_ID4 |日期
  • Person_ID2 |观察到 |人_ID1 |日期
  • Person_ID2 |观察到 |人_ID3 |日期
  • Person_ID2 |观察到 |人_ID4 |日期
  • Person_ID3 |观察到 |人_ID1 |日期
  • Person_ID3 |观察到 |人_ID2 |日期
  • Person_ID3 |观察到 |人_ID4 |日期
  • Person_ID4 |观察到 |人_ID1 |日期
  • Person_ID4 |观察到 |人_ID2 |日期
  • Person_ID4 |观察到 |人_ID3 |日期
任何策略或类似的例子都非常感激!

仍在努力学习基本的 VBA,但具有 Access 原则的坚实基础

vba ms-access
1个回答
0
投票
看来主要部分是创建观察者/被观察者列表。

假设输出表名称为

Observation

,字段为:Observer、Observed 和 ObservationDate,以下例程可能会有所帮助:

SUB Calc(ObservationDate AS DATE) DIM dbs AS DATABASE DIM rs1 AS RECORDSET DIM rs2 AS RECORDSET DIM rsOut AS RECORDSET SET dbs = CURRENTDB SET rs1 = dbs.OPENRECORDSET("Persons") SET rs2 = rs1.CLONE SET rsOut = dbs.OPENRECORDSET("Observations") DO UNTIL rs1.EOF rs2.MOVEFIRST DO UNTIL rs2.EOF IF rs1("PersonID") <> rs2("PersonID") Then WITH rsOut .ADDNEW !Observer = rs1("PersonID") !Observed = rs2("PersonID") .UPDATE END WITH END IF rs2.MOVENEXT Loop rs1.MOVENEXT LOOP rsOut.CLOSE SET rsOut = NOTHING rs2.CLOSE SET rs2 = NOTHING rs1.CLOSE SET rs1 = NOTHING SET dbs = NOTHING END SUB
    
© www.soinside.com 2019 - 2024. All rights reserved.