Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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 - Fatal编程技术网

Ms access 表单转换和数据刷新

Ms access 表单转换和数据刷新,ms-access,vba,Ms Access,Vba,我有一个带按钮的表单,当我按下它时,它会打开另一个表单。当我关闭第二个表单时,我需要刷新第一个表单 所以我需要在一个全局变量中插入第一个表单名,以便从第二个表单访问表单名以刷新第一个表单 我尝试创建以下内容: global formname as form formname = activeform.name 但是我收到一个错误,上面写着:选项是只读的。在按钮的单击事件中,您可以将表单的名称作为DoCmd.OpenForm的OpenArgs属性传递 在第二个表单的关闭事件中,您可以检查以下字

我有一个带按钮的表单,当我按下它时,它会打开另一个表单。当我关闭第二个表单时,我需要刷新第一个表单

所以我需要在一个全局变量中插入第一个表单名,以便从第二个表单访问表单名以刷新第一个表单

我尝试创建以下内容:

global formname as form

formname = activeform.name
但是我收到一个错误,上面写着:选项是只读的。

在按钮的单击事件中,您可以将表单的名称作为DoCmd.OpenForm的OpenArgs属性传递

在第二个表单的关闭事件中,您可以检查以下字符串值:

Private Sub Form_Close()
    If Me.OpenArgs <> "" Then
        'MsgBox Me.OpenArgs
        Forms(Me.OpenArgs).Refresh  'or .Requery
    End If
End Sub
在按钮的Click事件中,您可以将表单的名称作为DoCmd.OpenForm的OpenArgs属性传递

在第二个表单的关闭事件中,您可以检查以下字符串值:

Private Sub Form_Close()
    If Me.OpenArgs <> "" Then
        'MsgBox Me.OpenArgs
        Forms(Me.OpenArgs).Refresh  'or .Requery
    End If
End Sub

为什么不直接进入VBA代码,用close子命令刷新它呢?我不理解在表单之间传递全局变量的必要性-您应该能够在第二个表单中执行类似的操作:

Private Sub Form_Close()
     Form_YourFormHere.Refresh
End Sub

为什么不直接进入VBA代码,用close子命令刷新它呢?我不理解在表单之间传递全局变量的必要性-您应该能够在第二个表单中执行类似的操作:

Private Sub Form_Close()
     Form_YourFormHere.Refresh
End Sub

如果必须使用此方法,请在第一个表单的模块中尝试此方法:

Public formname as Form

Private Sub Command1_Click()
    Set formname = Me
End Sub

表单是一种对象类型,只能使用Set语句将其指定给变量,否则VBA会认为您试图将对象的值指定给变量

您说过需要表单名称,但是您的变量是表单类型,而不是字符串。第一个代码片段将实现您似乎想要实现的结果,第二个代码片段将实现您说过的想要实现的结果


不过,另一种方法可能更好、更可靠。

如果必须使用这种方法,请在第一个表单模块中尝试:

Public formname as Form

Private Sub Command1_Click()
    Set formname = Me
End Sub

表单是一种对象类型,只能使用Set语句将其指定给变量,否则VBA会认为您试图将对象的值指定给变量

您说过需要表单名称,但是您的变量是表单类型,而不是字符串。第一个代码片段将实现您似乎想要实现的结果,第二个代码片段将实现您说过的想要实现的结果


另一种方法可能更好、更可靠,尽管如此。

这是什么语言?原始标题是“access”,因此除非OP更正,否则我将使用它。这是MS access VBA。“Global”已被“Public”取代。如果出现未处理的错误或停止执行,全局声明的变量可能会失去其状态。最好采用不依赖全局变量的方法。这是什么语言?最初的标题是“access”,因此除非OP纠正它,否则我将使用它。这是MS access VBA。“global”已被“Public”取代。如果出现未处理的错误或停止执行,全局声明的变量可能会丢失其状态。最好采用不依赖全局变量的方法。