如何通过复选框和不同日期的数量添加新的访问记录?

问题描述

我有查询 1 或表 1 有以下数据

Number of employee/start date/end date/code/different date by Days/checkBox 

示例

200/01-01-2021/15-01-2021/E/14/Yes

当 checkBox=Yes 时,我需要在新表 2 中自动打开 14 条记录,代码如下:

 employee/date/code
 200/01-01-2021/E
 200/02-01-2021/E
 200/03-01-2021/E
 200/04-01-2021/E
 200/05-01-2021/E
 200/06-01-2021/E
 200/07-01-2021/E
 200/08-01-2021/E
 200/09-01-2021/E
 200/10-01-2021/E
 200/11-01-2021/E
 200/12-01-2021/E
 200/13-01-2021/E
 200/14-01-2021/E

解决方法

提取参数:

Data = "200/01-01-2021/15-01-2021/E/14/Yes"

ENo = Split(Data,"/")(0)
FirstDate = DateValue(Split(Data,"/")(1))
ECode = Split(Data,"/")(3)
Periods = Split(Data,"/")(4)

然后运行此查询并传递参数:

PARAMETERS 
    Periods Short,FirstDate DateTime;
SELECT DISTINCT 
    10 * Abs([Deca].[id] Mod 10) + Abs([Uno].[id] Mod 10) + 1 AS Sequence,ENo As Employee,DateAdd("d",[Sequence] - 1,[FirstDate]) AS DateStart,ECode As Code
FROM 
    MSysObjects AS Uno,MSysObjects AS Deca
WHERE 
    (10 * Abs([Deca].[id] Mod 10) + Abs([Uno].[id] Mod 10)) < [Periods];

输出:

enter image description here

您可以将此查询用作追加查询中的源。

或者,使用 DAO 直接追加记录:

Dim Records As DAO.Recordset
Dim Index   As Integer

Set Records = CurrentDb.OpenRecordset("Select * From Table2")

For Index = 0 To Periods - 1
    Records.AddNew
        Records!Employee.Value = Eno
        Records!Date.Value = DateAdd("d",Index,FirstDate)
        Records!Code.Value = ECode
    Records.Update
Next
Records.Close