使用可变日期添加功能批量生成工单

问题描述 投票:0回答:1

我有一个工作订单数据库,我需要批量创建每日、每周、每月、每季度等的工作订单。我有一个主表单,其中包含[任务]、[机器]、[分配给]、[开始日期]字段、[结束日期] 和确定 [截止日期] 的频率组合框。 [WO_ID] 是一个自动编号 PK,[WO_Num] 将使用 Dmax 函数生成。 我的想法是让用户在上面的字段中输入信息,然后使用插入语句、DAO 或其他函数来使用频率组合框中的变量来确定 [到期日期] 的日期添加:

Frequency.column(2) 包含计数 # Frequency.column(3) 包含间隔(即“d”、“w”、“m”等) 然后,循环将使用上述信息在开始日期和结束日期之间创建必要数量的记录。

任何帮助将不胜感激,因为我的编码知识仅限于对我在网上找到的内容进行逆向工程,直到我可以工作(充其量是不言而喻的)。

这是我发现的一段代码,我正在尝试开始工作,但不确定如何解释开始日期/结束日期以及循环开始/结束的格式(“I”部分)

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim i As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("Workorders")
For i = 1 To 52
    rs.AddNew
    rs![WO_ID] = [Workorders]![WO_ID]
    rs![WO_Num] = Dmax([Workorders]![WO_Num])+1
    rs![Date_Completed] = Null
    rs![Assigned_To] = me.Assigned_To
    rs![Task] = me.Task
    rs![Machine] = me.Machine
    rs![DueDate] = DateAdd(Frequency.column(3), Frequency.column(2), me.StartDate) 
    rs.Update
Next i
rs.Close
Set rs = Nothing
Set db = Nothing
vba ms-access dateadd
1个回答
0
投票

所以...假设您的组合框称为“频率”并且涉及的频率是每周、每月和每季度,那么您的代码将如下所示...

If Frequency.column(1) = "Weekly" Then

...

For iWeek = 1 To 52 ' for a years worth of Work Orders

...

' rs![DueDate] = DateAdd(Frequency.column(3), Frequency.column(2), me.StartDate) 

 rs![DueDate] = DateAdd("ww",1,me.StartDate) ' this adds one week to the start date

...

Next iWeek


End If 



If Frequency.column(1) = "Monthly" Then

'...

For iMonth = 1 To 12 ' for a years worth of Monthly Work Orders

'...

' rs![DueDate] = DateAdd(Frequency.column(3), Frequency.column(2), me.StartDate) 

 rs![DueDate] = DateAdd("m",1,me.StartDate) ' this adds one month to the start date

'...

Next iMonth


End If 



If Frequency.column(1) = "Quarterly" Then

...

For iQuarter = 1 To 4 ' for a years worth of Quarterly Work Orders

...

' rs![DueDate] = DateAdd(Frequency.column(3), Frequency.column(2), me.StartDate) 

 rs![DueDate] = DateAdd("q",1,me.StartDate) ' this adds one Quarter to the start date

...

Next iQuarter


End If 

抱歉,如果这很啰嗦,但这样解释起来更容易。该代码显然没有经过测试,因为它只是一个示例。

© www.soinside.com 2019 - 2024. All rights reserved.