【发布时间】:2020-07-13 21:26:59
【问题描述】:
我正在创建一个按钮,当您按下它时,它会获取日期字段的值(在表单上表示)并向其添加一个数字。添加数字后,结果应在另一个日期字段中表示(在表单上表示):简而言之,我正在尝试创建一个按钮,将 7 天添加到开始日期,根据用户的周数计算完成日期选择(他按下按钮多少次)。我能想到的是如何让表格上的第二个日期立即更新。我试过 me.refresh 和 me.requery 但这不起作用。此外,有时(并非总是)我收到意外的“保存/复制/忽略消息”,告诉我数据已被另一个用户使用。
此外,似乎延迟时间过长。您可以多次运行代码,但没有任何反应。如果您等待(字面意思是 5 分钟),则会出现错误消息。关闭错误消息后,表单就会正确更新。
我学习编程已经有一段时间了,但是让表单快速更新这一方面我似乎仍然无法理解。以下是我的代码:
Private Sub Comando36_Click()
If ObjectivesDialNumber.Value = 1 Then
ObjectivesDialNumber.Value = 2
Me.imgDue.Visible = True
Me.imgTre.Visible = False
Me.imgQuattro.Visible = False
Me.imgCinque.Visible = False
Me.imgSei.Visible = False
Me.imgUno.Visible = False
Me.lblNextReview.Caption = "weeks"
st_sql = "UPDATE tblProjectMasterList SET tblProjectMasterList.NextReviewDateObjectives = [tblProjectMasterList].[LastReviewDateObjectives]+14"
Application.DoCmd.RunSQL (st_sql)
ElseIf ObjectivesDialNumber.Value = 2 Then
ObjectivesDialNumber.Value = 3
Me.imgDue.Visible = False
Me.imgTre.Visible = True
Me.imgQuattro.Visible = False
Me.imgCinque.Visible = False
Me.imgSei.Visible = False
Me.imgUno.Visible = False
Me.lblNextReview.Caption = "weeks"
st_sql = "UPDATE tblProjectMasterList SET tblProjectMasterList.NextReviewDateObjectives = [tblProjectMasterList].[LastReviewDateObjectives]+21"
Application.DoCmd.RunSQL (st_sql)
ElseIf ObjectivesDialNumber.Value = 3 Then
ObjectivesDialNumber.Value = 4
Me.imgDue.Visible = False
Me.imgTre.Visible = False
Me.imgQuattro.Visible = True
Me.imgCinque.Visible = False
Me.imgSei.Visible = False
Me.imgUno.Visible = False
Me.lblNextReview.Caption = "weeks"
st_sql = "UPDATE tblProjectMasterList SET tblProjectMasterList.NextReviewDateObjectives = [tblProjectMasterList].[LastReviewDateObjectives]+28"
Application.DoCmd.RunSQL (st_sql)
ElseIf ObjectivesDialNumber.Value = 4 Then
ObjectivesDialNumber.Value = 5
Me.imgDue.Visible = False
Me.imgTre.Visible = False
Me.imgQuattro.Visible = False
Me.imgCinque.Visible = True
Me.imgSei.Visible = False
Me.imgUno.Visible = False
Me.lblNextReview.Caption = "weeks"
st_sql = "UPDATE tblProjectMasterList SET tblProjectMasterList.NextReviewDateObjectives = [tblProjectMasterList].[LastReviewDateObjectives]+35"
Application.DoCmd.RunSQL (st_sql)
ElseIf ObjectivesDialNumber.Value = 5 Then
ObjectivesDialNumber.Value = 6
Me.imgDue.Visible = False
Me.imgTre.Visible = False
Me.imgQuattro.Visible = False
Me.imgCinque.Visible = False
Me.imgSei.Visible = True
Me.imgUno.Visible = False
Me.lblNextReview.Caption = "weeks"
st_sql = "UPDATE tblProjectMasterList SET tblProjectMasterList.NextReviewDateObjectives = [tblProjectMasterList].[LastReviewDateObjectives]+42"
Application.DoCmd.RunSQL (st_sql)
ElseIf ObjectivesDialNumber.Value = 6 Then
ObjectivesDialNumber.Value = 1
Me.imgDue.Visible = False
Me.imgTre.Visible = False
Me.imgQuattro.Visible = False
Me.imgCinque.Visible = False
Me.imgSei.Visible = False
Me.imgUno.Visible = True
Me.lblNextReview.Caption = "week"
st_sql = "UPDATE tblProjectMasterList SET tblProjectMasterList.NextReviewDateObjectives = [tblProjectMasterList].[LastReviewDateObjectives]+7"
Application.DoCmd.RunSQL (st_sql)
End If
End Sub
【问题讨论】:
-
当您准备好进行 GUI 更新时可能会尝试 DoEvents()
-
这越来越陌生了。当我运行代码时,该字段不会更新。一旦我打开表检查它是否有效并确认查询已更新,我就会收到错误消息“保存/复制/不保存”。只要我选择不保存,表格就会在表格关闭时正确更新。
-
不,DoEvents 允许操作系统处理可能正在等待您的代码的事件。类似的问答在这里stackoverflow.com/questions/6584046/…
-
抱歉,我的语法有问题。 DoEvents 是否单独出现在代码末尾?
-
只需在结束子之前在行上键入 DoEvents。这样,如果您的任何 if 块被击中,并且控件的可见性或标题发生更改,则应该允许绘制这些更改
标签: ms-access vba ms-access-2010