2011-04-28 57 views
1

我有一个包含两个组合框的窗体的访问数据库。一个组合框根据第一个组合框的选择过滤它的选项。这工作完美,但 - 我有一个命令按钮,更改窗体的记录源。我只知道如何根据一张表填充组合框。因此,当表单更改记录源时,组合框仍然充满来自第一个记录源的选项。我怎样才能创建一个查询来填充组合框选项不是在一般的表上,而是基于当时表单的记录源是什么?过滤器访问组合框

回答

1

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

编辑在回复评论

行来源并不一定是一个QueryDef对象,它可以只是一个SQL语句:

Dim sSQL As String 

sSQL = "select whatever from wherever" 
comboBox.RowSource = sSQL 

我什么也看不到评论同时我正在编辑,但我不明白你在第二个问什么....在第二个,分开,看看评论,我想你问你可以设置行来源到表单的RecordSource属性。这是一个糟糕的主意 - 你可能在RecordSource中获得了比RowSource更多的列,查询构造的一个基本原则是只请求你想要的列。

+0

如果我建立一个字符串是一个SQL查询的基础在vba有没有办法创建一个新的访问查询与该字符串,以便我可以引用新查询作为组合框的行来源? – Zack 2011-04-28 18:07:04

+0

也有一种方法来使用VBA中的Form_FormName.RecordSource处理程序或访问SQL来分配行源?或没有? – Zack 2011-04-28 18:08:52

+1

没有“Form_FormName.RecordSource处理程序”。正如Roland告诉你的那样,无论代码如何变化,记录源也应该更改组合框的rowsources。 – 2011-04-29 02:22:01