Access 2003 FORMS:当我在运行时使用 VBA 设置时,即使我关闭然后打开,ListBox 的“RowSource”仍然存在

Posted

技术标签:

【中文标题】Access 2003 FORMS:当我在运行时使用 VBA 设置时,即使我关闭然后打开,ListBox 的“RowSource”仍然存在【英文标题】:Access 2003 FORMS: when I set at runtime with VBA the "RowSource" for a ListBox persist even if I close and then open 【发布时间】:2011-05-05 16:38:33 【问题描述】:

...

如何解决这个问题,我希望在打开新表单时拥有干净的“RowSource”...

【问题讨论】:

您是否正在保存表单的设计?设置 Rowsource 后按键盘上的 Ctrl-S? 【参考方案1】:

您可以在表单加载期间设置 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

【讨论】:

所以在这种情况下,我将分配给一个空字符串......但这种行为对我来说似乎不太好。我在运行时设置行源,然后在我重新打开表单时打开最后使用的... 我不明白。根据我的建议,表单将始终使用 lstNames.RowSource 打开,因为它在 Form_Load 中设置。 是的,但是我的列表不应该在表单加载时加载数据,因为此时它不知道要查询什么。我正在做的是一个搜索框,当您按下搜索时,列表框将充满数据。但在我的问题中,列表在启动时填充了最后一次搜索......所以在启动时我将行源设置为“”什么都没有 在您的代码更改 RowSource 后不要保存表单,或者按照我的建议在表单加载时设置 RowSource。或者您可以禁用列表框(设置 Enabled = No,或 Visible = No)...而不必担心列表框中的内容...一旦用户为您提供选择条件,设置 RowSource 并启用它。【参考方案2】:

设置列表框的行来源会改变表单的设计。 Access 希望为您保存这些更改(实际上,我认为默认行为是询问)。如果您想关闭表单而不做任何更改,请将此代码放在命令按钮的 OnClick 中:

DoCmd.Close acForm, Me.Name, acSaveNo

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

【讨论】:

以上是关于Access 2003 FORMS:当我在运行时使用 VBA 设置时,即使我关闭然后打开,ListBox 的“RowSource”仍然存在的主要内容,如果未能解决你的问题,请参考以下文章

Access 2003中的SQL:INSERT INTO和多个SELECT查询

检查文件夹是不是存在于 Access Continuous Forms 中

当我引用其他表时,如何保存在 Access 2003 中的表单中创建的数据?

Access 2003 的托管代码插件

MS Access 2010 运行时 - 连续表单中缺少鼠标右键单击上下文菜单

Oracle Forms 作为“前端”与 Microsoft Access 相比如何?