Ms access 如何获取要更新的控件
我正在创建一个按钮,当您按下它时,它会获取表单上表示的日期字段的值,并向其中添加一个数字。添加数字后,结果应该在表单上表示的另一个日期字段中表示:简言之,我试图创建一个按钮,在开始日期的基础上增加7天,根据用户选择的周数和按下按钮的次数计算完成日期。我能想到的是如何让表单上的第二个日期立即更新。我尝试了me.refresh和me.requery,但这不起作用。此外,有时我会收到一条意外的保存/复制/忽略消息,告诉我数据已被其他用户使用 此外,似乎延迟时间过长。您可以多次运行代码,但什么都不会发生。如果您按字面意思等待5分钟,就会出现错误消息。一旦关闭错误消息,表单将正确更新 我学习编程已经有一段时间了,但在快速更新表单这方面,我似乎仍然不能动脑。下面是我的代码:Ms access 如何获取要更新的控件,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我正在创建一个按钮,当您按下它时,它会获取表单上表示的日期字段的值,并向其中添加一个数字。添加数字后,结果应该在表单上表示的另一个日期字段中表示:简言之,我试图创建一个按钮,在开始日期的基础上增加7天,根据用户选择的周数和按下按钮的次数计算完成日期。我能想到的是如何让表单上的第二个日期立即更新。我尝试了me.refresh和me.requery,但这不起作用。此外,有时我会收到一条意外的保存/复制/忽略消息,告诉我数据已被其他用户使用 此外,似乎延迟时间过长。您可以多次运行代码,但什么都不会发生
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
您可能想尝试一下,或者尝试将me.repaint添加到代码中
Private Sub Comando36_Click()
On Error GoTo Comando36_err
Dim db As Database
Dim rs As Recordset
Dim lrd As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("Select * From tblProjectMasterList")
Me.imgDue.Visible = False
Me.imgTre.Visible = False
Me.imgQuattro.Visible = False
Me.imgCinque.Visible = False
Me.imgSei.Visible = False
Me.imgUno.Visible = False
Me.lblNextReview.Caption = "weeks"
Select Case ObjectivesDialNumber.Value
Case 1
ObjectivesDialNumber.Value = 2
Me.imgDue.Visible = True
lrd = 14
Case 2
ObjectivesDialNumber.Value = 3
Me.imgTre.Visible = True
lrd = 21
Case 3
ObjectivesDialNumber.Value = 4
Me.imgQuattro.Visible = True
lrd = 28
Case 4
ObjectivesDialNumber.Value = 5
Me.imgCinque.Visible = True
lrd = 35
Case 5
ObjectivesDialNumber.Value = 6
Me.imgSei.Visible = True
lrd = 42
Case Else
ObjectivesDialNumber.Value = 1
Me.imgUno.Visible = True
Me.lblNextReview.Caption = "week"
lrd = 7
End Select
rs.Edit
rs![NextReviewDateObjectives] = DateAdd("d", lrd, rs![LastReviewDateObjectives])
rs.Update
rs.Close
Me.Refresh
Me.Repaint
Comando36_Exit:
Exit Sub
Comando36_err:
MsgBox Error$
我希望有帮助。这些年来,我确实得到了很多帮助。当您准备好进行GUI更新时,可能会尝试DoEvents。这越来越奇怪了。当我运行代码时,字段不会更新。一旦我打开表检查它是否工作并确认查询已更新,我就会收到错误消息save/copy/dont save。只要我选择“不保存”,表单就会在表关闭时正确更新。否,DoEvents允许操作系统处理可能正在等待代码的事件。这里有类似的Q/A抱歉,我在语法上有问题。DoEvents是否仅在代码末尾?在结束sub之前,只需在行上键入DoEvents。这样,如果任何if块被击中,并且控件的可见性或标题发生更改,则应允许对这些更改进行绘制