0

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

现在我想"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)"

此表达式键入不正确,或者它太复杂而无法计算。例如,一个数值表达式可能包含太多复杂的元素。尝试通过将表达式的一部分分配给变量来简化表达式。

4

2 回答 2

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;
于 2019-05-08T07:50:43.127 回答
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"

于 2019-05-12T17:30:42.287 回答