我有一个包含我的分销商列表的组合框,当我在组合框中选择一个分销商时,我有一个子窗体,列出了该特定分销商的交易。
现在,我想在组合框中包括一个"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)"
时都会收到的错误消息:
此表达式的输入错误,或者过于复杂而无法 评估。例如,一个数字表达式可能包含太多 复杂的元素。尝试通过分配来简化表达式 表达式中的变量部分。
答案 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"