【发布时间】:2018-08-30 15:52:01
【问题描述】:
我在主窗体中有一个日期文本框,它在子窗体中输出 6 个连续日期(2 周间隔)。作为主表单的AfterInsert() 事件的一部分,子表单将填充这些日期。
Private Sub Form_AfterInsert()
Dim strSQL As String
Dim i As Integer
For i = 2 To 12 Step 2
strSQL = "INSERT INTO tbl_Date (DateDescriptionID, TestDate) "
strSQL = strSQL & "SELECT " & Me.tbDescriptionID & ", (DateAdd('ww', " & i & ", #" & Me.tbStartDate & "#));"
CurrentDb.Execute strSQL, dbFailOnError
Next i
End Sub
如果用户更改主表单中的日期文本框,我希望子表单日期能够反映该更改。我尝试了UPDATE 查询以用新日期替换现有日期,但在尝试对齐主外键时遇到了麻烦。我只能用空值(null)替换现有日期,但不确定如何用新日期相应地更新现有日期。
Private Sub tbStartDate_AfterUpdate()
Dim strSQL As String
strSQL = "UPDATE tbl_Date "
strSQL = strSQL & "SET [TestDate] = NULL "
strSQL = strSQL & "WHERE [DateDescriptionID] = " & Me.DescriptionID & ";"
CurrentDb.Execute strSQL, dbFailOnError
End Sub
用户输入 05/01/2018
Date Data
05/15/2018 Apple
05/29/2018 Banana
06/12/2018 Orange
06/26/2018 Strawberry
07/10/2018 Pineapple
07/24/2018 Peach
用户更改条目至 06/30/2018
Date Data
07/14/2018 Apple
07/28/2018 Banana
08/11/2018 Orange
08/25/2018 Strawberry
09/08/2018 Pineapple
09/22/2018 Peach
【问题讨论】:
-
您不能将日期更新为与原始日期相同的 DateDiff 期间。航空代码 -
NewDateValue = CurrentDateValue + DateDiff("D" ,OldStartDate,NewStartDate) -
好建议!我将如何通过旧的开始日期?我应该在
BeforeUpdate()事件期间使用全局变量吗? -
为什么不存储间隔,而不是日期,或者如果恒定 2 周,只需存储订单序列并计算日期
= DateAdd("ww",2 * countOfFormerElements,StartDate) -
@Minty 我可以通过
Me.tbStartDate.OldValue访问控件的旧值 -
@ComputerVersteher 间隔将始终保持在 2 周。如何将订单序列存储在
UPDATESQL 中?