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 Access 2003窗体:当我在运行时使用VBA设置;RowSource“;对于列表框,即使我先关闭后打开,也会保持不变_Ms Access_Vba - Fatal编程技术网

Ms access Access 2003窗体:当我在运行时使用VBA设置;RowSource“;对于列表框,即使我先关闭后打开,也会保持不变

Ms access Access 2003窗体:当我在运行时使用VBA设置;RowSource“;对于列表框,即使我先关闭后打开,也会保持不变,ms-access,vba,Ms Access,Vba,Access 2003窗体:当我在运行时使用VBA设置列表框的“行源代码”时,即使我先关闭然后再打开,列表框的“行源代码”也会保持不变 如何解决此问题,我希望在打开新表单时使用干净的“RowSource…”。您可以在表单加载期间设置RowSource Private Sub Form_Load() Dim strSql As String strSql = "SELECT f.id, f.fname FROM foo AS f ORDER BY f.fname;" Me.

Access 2003窗体:当我在运行时使用VBA设置列表框的“行源代码”时,即使我先关闭然后再打开,列表框的“行源代码”也会保持不变


如何解决此问题,我希望在打开新表单时使用干净的“RowSource…”。

您可以在表单加载期间设置RowSource

Private Sub Form_Load()
    Dim strSql As String
    strSql = "SELECT f.id, f.fname FROM foo AS f ORDER BY f.fname;"
    Me.lstNames.RowSource = strSql
End Sub

可以在表单加载期间设置行源

Private Sub Form_Load()
    Dim strSql As String
    strSql = "SELECT f.id, f.fname FROM foo AS f ORDER BY f.fname;"
    Me.lstNames.RowSource = strSql
End Sub

设置列表框的行源将更改窗体的设计。Access希望为您保存这些更改(实际上,我认为默认行为是询问)。如果要在不进行更改的情况下关闭表单,请将此代码放在命令按钮的OnClick中:

DoCmd.Close acForm, Me.Name, acSaveNo

最后一个参数告诉Access不要保存更改。另一种选择是HansUp在他的回答的第二条评论中给你的——只需禁用列表框。然后,当您确定其RowSource应该是什么(在用户输入时),设置RowSource和Enabled属性。

设置列表框的RowSource会更改表单的设计。Access希望为您保存这些更改(实际上,我认为默认行为是询问)。如果要在不进行更改的情况下关闭表单,请将此代码放在命令按钮的OnClick中:

DoCmd.Close acForm, Me.Name, acSaveNo

最后一个参数告诉Access不要保存更改。另一种选择是HansUp在他的回答的第二条评论中给你的——只需禁用列表框。然后,当您确定它的RowSource应该是什么(在用户输入时),设置RowSource和Enabled属性。

因此在本例中,我将分配给一个空字符串。。。但我觉得这种行为不太好。我在运行时设置了rowsource,然后当我重新打开表单时,最后使用的将打开…我不明白。根据我的建议,表单将始终以lstNames.RowSource打开,因为它设置为form_Load。这是真的,但我的列表不应该在表单加载时加载数据,因为此时它不知道要查询什么。我所做的是一个搜索框,当你按下搜索时,列表框中会充满数据。但在我的问题中,列表是在启动时用最后一次搜索填写的。。。因此,在启动时,我将rowsource设置为“”Nothing,或者在代码更改rowsource后不保存表单,或者按照我的建议将rowsource设置为form load。或者您可以禁用列表框(set Enabled=No或Visible=No)。。。不用担心列表框中的内容。。。一旦用户给出选择条件,设置行源并启用它。。。但我觉得这种行为不太好。我在运行时设置了rowsource,然后当我重新打开表单时,最后使用的将打开…我不明白。根据我的建议,表单将始终以lstNames.RowSource打开,因为它设置为form_Load。这是真的,但我的列表不应该在表单加载时加载数据,因为此时它不知道要查询什么。我所做的是一个搜索框,当你按下搜索时,列表框中会充满数据。但在我的问题中,列表是在启动时用最后一次搜索填写的。。。因此,在启动时,我将rowsource设置为“”Nothing,或者在代码更改rowsource后不保存表单,或者按照我的建议将rowsource设置为form load。或者您可以禁用列表框(set Enabled=No或Visible=No)。。。不用担心列表框中的内容。。。用户给出选择条件后,设置行源并启用它。是否在某个时候保存表单的设计?设置行源后按键盘上的Ctrl-S键?是否在某个时候保存窗体的设计?设置行源后在键盘上按Ctrl-S键?