Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何获取要更新的控件_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 如何获取要更新的控件

Ms access 如何获取要更新的控件,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我正在创建一个按钮,当您按下它时,它会获取表单上表示的日期字段的值,并向其中添加一个数字。添加数字后,结果应该在表单上表示的另一个日期字段中表示:简言之,我试图创建一个按钮,在开始日期的基础上增加7天,根据用户选择的周数和按下按钮的次数计算完成日期。我能想到的是如何让表单上的第二个日期立即更新。我尝试了me.refresh和me.requery,但这不起作用。此外,有时我会收到一条意外的保存/复制/忽略消息,告诉我数据已被其他用户使用 此外,似乎延迟时间过长。您可以多次运行代码,但什么都不会发生

我正在创建一个按钮,当您按下它时,它会获取表单上表示的日期字段的值,并向其中添加一个数字。添加数字后,结果应该在表单上表示的另一个日期字段中表示:简言之,我试图创建一个按钮,在开始日期的基础上增加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

您可能想尝试一下,或者尝试将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块被击中,并且控件的可见性或标题发生更改,则应允许对这些更改进行绘制