1

我有一个查询,我希望条件查看组合框。我使用以下行源填充组合框以添加“全部”选项:

SELECT id, team FROM tblTeams ORDER BY team UNION SELECT "*", "<ALL>" FROM tblTeams;

如果我选择一个团队,查询运行良好(条件是针对 id,组合框的绑定列是 1)。但是,如果我选择 <ALL>,我会收到警告:“此表达式键入错误,或者它太复杂而无法计算。例如,一个数字表达式可能包含太多复杂元素。尝试通过分配部分来简化表达式变量的表达式。”

该字段是一个整数,所以我认为 * 引起了问题。我尝试将其更改为“> 0”,但这给了我同样的错误。任何关于使这项工作的建议,这样我就不必使用 VBA 来操作查询(我可以这样做,但如果你不这样做,我觉得它会更干净——让我知道这是否是一个错误的想法) ?

4

2 回答 2

2

如果 tblTeams 中的 'id' 字段是数字,则尝试使用诸如 '*' 或 '>0' 之类的字符串将在它们被 UNION 连接在一起时产生错误。

根据您的需要,我建议使用如下查询,其中使用 -1 作为您的“id”,或其他某种唯一的数字“id”。

假设您的“id”字段都是正数。然后,您可以测试负数以确定是否应返回所有记录。

SELECT id, team FROM tblTeams 
UNION 
SELECT -1 as id, "<ALL>" as team FROM tblTeams 
ORDER BY team

或者,您可以将您的 'id' 字段转换为字符串,因此它是一个字符串,就像 '*' 或 '>0' 一样。重要的是字段具有相同的数据类型。

SELECT Cstr(id), team FROM tblTeams
UNION
SELECT "*" as id, "<All>" as team from tblTeams
ORDER BY team
于 2012-06-29T16:18:05.207 回答
1

在我看来,您希望将您的表单称为查询中的标准行。

尝试使用喜欢。这对我有用:

SELECT Table1.ID, Table1.Team
FROM Table1
WHERE Table1.ID Like [Forms]![Table1]![MyCombo]

这不需要任何代码即可工作。如果选择了一个数字,则返回该数字,如果选择 All,则返回所有非空记录。

于 2012-06-29T16:52:12.383 回答