【发布时间】:2015-09-18 16:01:54
【问题描述】:
我创建了表单,允许用户指定查询的约束条件,即他们所在州的学生出勤率与使用组合框的另一个州的出勤率。当我向查询添加多个约束时,就会出现问题。我在 2 个类别上取得了间歇性的成功,但似乎只与 1 个类别一致。我需要三个类别,但我没有成功让所有三个类别都在同一个表格上工作。但是,如果独立运行,所有类别都可以自行工作(从查询中删除一些约束)。所以,我知道我表单上的 ComboBoxes 可以正常工作。问题似乎出在查询的 SQL 上。
SELECT
Students_All_Classes.LastName, Students_All_Classes.FirstName,
Students_All_Classes.[Class Name], Students_All_Classes.State,
Students_All_Classes.ClassDate
FROM Students_All_Classes
WHERE
(((Students_All_Classes.[Class Name])=[Forms]![User Input]![ComboClass]) AND
((Students_All_Classes.State)=[Forms]![User Input]![ComboState]) AND
((Students_All_Classes.ClassDate)=[Forms]![User Input]![ComboDate]));
我认为问题在于 where 语句中的 AND 运算符。如果我将其更改为 OR,我可以使用所有三个约束。但是,我需要限制是累积的,所以它是 x 类和 y 类和 Z 类。任何帮助将不胜感激!
谢谢!
【问题讨论】:
-
这是您在 VBA 中构建的 SQL 还是从查询的 SQL 视图构建的?它可能只需要带有日期的组合框周围的#s。如果您删除日期条件,它是否可以正常工作?
-
查询将执行并给出带有 1 个有时 2 个约束的结果。如果我尝试有 3 个三个约束(就像我在上面的 SQL 中写出的那样),则查询不会执行。没有错误消息,但没有给出结果 - 即使我知道选择的项目应该返回结果。
-
这是 SQL 视图。问题孩子似乎是 Date 变量。我将如何用#重写 SQL?
-
您只需在组合框前后使用# 作为分隔符,并带有日期值-#[Forms]![User Input]![ComboDate]#。它告诉 Access 将从组合框返回的文本值视为日期。
-
你确定有记录 确实实际上满足 3 个约束吗?
标签: sql forms ms-access parameters