如何在组合框中包含“全选”选项?

时间:2019-05-07 19:36:01

标签: sql ms-access access-vba ms-access-forms

我有一个包含我的分销商列表的组合框,当我在组合框中选择一个分销商时,我有一个子窗体,列出了该特定分销商的交易。

现在,我想在组合框中包括一个"Select All"选项,该选项将显示我的分销商的所有交易。我尝试通过UNION查询来执行此操作,但到目前为止它仍然没有作用。

这是下面的代码:

SELECT Sous_Compte.Sous_Compte_ID, Sous_Compte.Numero_Sous_Master, Sous_Compte.Prenom & " " & Sous_Compte.Nom AS Nom 
FROM Sous_Compte

UNION SELECT "*" AS Sous_Compte_ID, "(All)" as Numero_Sous_Master, " " AS Nom from Sous_Compte

ORDER BY Sous_Compte.Numero_Sous_Master;

这是我每次选择"(All)"时都会收到的错误消息:

  

此表达式的输入错误,或者过于复杂而无法   评估。例如,一个数字表达式可能包含太多   复杂的元素。尝试通过分配来简化表达式   表达式中的变量部分。

2 个答案:

答案 0 :(得分:0)

两个查询的字段必须匹配:

SELECT 
    Sous_Compte.Sous_Compte_ID, Sous_Compte.Numero_Sous_Master, Sous_Compte.Prenom & " " & Sous_Compte.Nom AS Nom 
FROM 
    Sous_Compte
UNION 
SELECT 
    0, "(All)", ""
FROM
    Sous_Compte
ORDER BY 
    Sous_Compte.Numero_Sous_Master;

答案 1 :(得分:0)

设置主/子链接属性无效,因为*字符不能作为键值。但是可以在动态参数化查询中引用组合框,例如:

SELECT * FROM tablename WHERE ID LIKE Forms!formname!comboboxname;

然后该查询可以是表单的RecordSource。

从组合框中选择项目后,必须刷新/重新查询表单。可以使用组合框AfterUpdate事件或按钮Click事件。如果使用单个表单,则只需:Me.Requery。如果使用子窗体,则必须通过子窗体容器控件进行引用:Me.subformcontainername.Requery。 (请注意,这是在纠正我的评论:打开子窗体会失败-子窗体可以工作。)

此动态参数化查询也可以是报表的RecordSource。或者,如果您不想与报表RecordSource进行相同的查询,则可以使用OpenReport方法的WHERE CONDITION参数:

DoCmd.OpenReport "reportname", , , "ID LIKE Forms!formname!comboboxname"