【问题标题】:Filter Access Combo Boxes过滤器访问组合框
【发布时间】:2011-04-28 17:22:29
【问题描述】:

我有一个包含两个组合框的表单的访问数据库。一个组合框根据第一个组合框的选择过滤其选项。这很好用,但是 - 我有一个命令按钮,可以更改表单的记录源。我只知道如何根据一张表填充组合框。因此,当表单更改记录源时,组合框仍会填充来自第一个记录源的选项。如何创建一个查询来填充组合框选项,而不是一般在一个表上,而是基于当时表单的记录源?

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    在更改 RecordSource 的同一命令按钮处理程序中,为每个组合框分配一个新的 RowSource。更好的是,在按钮处理程序调用的单独子中执行此操作。您的代码必须知道或能够弄清楚新的 RowSource 应该是什么以对应于新的 RecordSource。

    编辑回复 cmets

    RowSource 不必是 QueryDef 对象,它可以只是一条 SQL 语句:

    Dim sSQL As String
    
    sSQL = "select whatever from wherever"
    comboBox.RowSource = sSQL
    

    我在编辑的同时看不到 cmets,但我不明白你在第二个中要问什么......第二个,分开,看看 cmets,我想你'问它你可以将 RowSource 设置为表单的 RecordSource 属性。这让我觉得这是个坏主意——RecordSource 中的列可能比 RowSource 中要处理的列多得多,并且查询构造的基本原则是只请求所需的列。

    【讨论】:

    • 如果我在 vba 中构建一个作为 sql 查询基础的字符串,有没有办法使用该字符串创建一个新的访问查询,以便我可以引用新查询作为组合框?
    • 还有没有办法在 vba 中使用 Form_FormName.RecordSource 处理程序或访问 sql 来分配行源?还是没有?
    • 没有“Form_FormName.RecordSource 处理程序”。正如 Roland 告诉您的,无论代码更改记录源也应该更改组合框的行源。
    猜你喜欢
    • 2017-12-23
    • 2017-11-27
    • 2019-08-30
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多