搜索查询问题:未选中复选框时,不会显示教师

时间:2017-04-05 12:27:47

标签: ms-access combobox ms-access-2007

+--------------+----------+-------------+------------+---------------+
| InstructorID | CourseID | Course date |    Type    | Pass or Fail? |
+--------------+----------+-------------+------------+---------------+
|        00001 |        1 | 22/05/2007  | Assessment | True          |
|        00001 |        2 | 01/02/2012  | Assessment | True          |
|        00001 |        3 | 21/08/2015  | Training   | True          |
|        00001 |        3 | 21/06/2016  | Assessment | False         |
|        00001 |        4 | 21/03/2013  | Assessment | True          |
|        00001 |       11 | 10/10/2014  | Training   | True          |
|        00004 |        3 | 20/01/1975  | Assessment | True          |
|        00100 |        1 | 25/05/2005  | Assessment | True          |
|        00100 |        5 | 12/12/1999  | Assessment | True          |
|        22222 |        1 | 07/05/2013  | Training   | True          |
|        22222 |        9 | 08/05/2015  | Assessment | False         |
|        22222 |       10 | 04/06/2015  | Assessment | True          |
|        22222 |       12 | 14/05/2014  | Assessment | True          |
+--------------+----------+-------------+------------+---------------+

我有一个查询引用此表的类型和Pass或Fail?。会发生的是我有一个带有组合框和复选框以及按钮的搜索页面,当按下按钮时,它将在组合框中搜索活动,然后搜索通过或失败是真是或不,然后如果类型是评估'或者'培训'。当复选框没有被取消时,它将进行训练,因为它们在技术上不合格,但是当勾选它时,它应该只显示有资格进行划独木舟,有评估,通过或失败的教练是真的。

10,11,12是3个独木舟课程的ID。

我的查询将产生合格:

IIf([Forms]![Find Activity Instructors]![Check4]=True,IIf([Pass or Fail?]=True,[Type]="Assessment",IIf([Forms]![Find Activity Instructors]![Check4]=False,IIf([Pass or Fail?]=True,[Type]="Training",[Pass or Fail?]=False))))

所以我的问题是,当组合框被选为划独木舟时,为什么不会出现培训教练?

Screenies:

https://snag.gy/jFru12.jpg查询屏幕

https://snag.gy/1HWImy.jpg搜索屏幕

https://snag.gy/CFIGJi.jpg当Combo is Canoeing和Check复选框为True时出现的内容

https://snag.gy/TO9ZiA.jpg当组合划独木舟并且复选框为假时会发生什么

1 个答案:

答案 0 :(得分:0)

由于IIf()的嵌套方式,IIf([Forms]![Find Activity Instructors]![Check4]=False,IIf([Pass or Fail?]=True,[Type]="Training",[Pass or Fail?]=False仅在[Pass或Fail!]的第一次测试为假时运行。

你没有显示任何训练有[通过或失败?] =假的记录 - 可能有吗?考虑:

  

WHERE [Category] ​​= [Forms]![Find Activity Instructors]![Category] ​​AND [Type] = IIf([Forms]![Find Activity Instructors]![Check4] = True," Assessment&# 34;,"培训")和[通过或失败?] =真

我从不在查询中使用动态参数。我更喜欢构造过滤条件的表单背后的代码,然后应用于表单或报表。

建议名称中不要使用空格或标点符号/特殊字符(下划线是例外)。更好的是[IsPassed]或[Is_Passed]。