如何创建一个全部' Access VBA表单中的选项作为查询参数传递?

时间:2016-06-02 20:48:20

标签: ms-access access-vba ms-access-2007

我有一个名为Persons的表,如:

     ID        Name

     1         John
     2         Jerry
     3         Jack

我已经设置了一个名为Form1的表单,其中包含一个名为Combo1的组合框。

Combo1有3个值 -

    1
    2
    3
    All

然后我设置以下查询:

    Select * From Persons WHERE Persons.ID = (Forms![Form1]![Combo1]);

在组合框中选择1,2或3时查询工作正常但我无法弄清楚如何在用户选择“全部”时选择所有记录。 。

2 个答案:

答案 0 :(得分:3)

我不明白为什么需要VBA。在我看来,只有查询才能得到你所需要的东西......

importAsync(["script1.js", "script2.js", "script3.js"]);

waitUntil(function() {
    return ((typeof(script1Function) !== "undefined")
            && (typeof(script2Function) !== "undefined")
            && (typeof(script3Function) !== "undefined"));
});

在组合框中选择 All 时,表中所有行的条件Select * From Persons WHERE Persons.ID = Forms![Form1]![Combo1] OR Forms![Form1]![Combo1] = 'All'; 将为True。因此,没有一个从查询的结果集中排除。

如果在组合框中选择了 All 以外的任何内容,则查询将仅返回Forms![Form1]![Combo1] = 'All'值与组合框值匹配的行。

答案 1 :(得分:0)

不确定你的Combo1现在是什么样的? 您是否要求显示ID> gt的所有条目? 1或所有条目>比在Combo1中选择的ID - 你还在Combo 1中有ALL选项吗?

如果你只是问你最后一个问题:

  

如何使其工作以便用户可以查看ID的所有名称   大于1?

然后你可以使用

Select * From Persons WHERE Persons.ID > 1 
AND (Persons.Name = Forms![Form1]![Combo2] OR Forms![Form1]![Combo2] = 'All');

但是现在我认为你们每个人都对你想要的东西感到困惑。希望我猜对了,让你走上正确的道路