Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

查询中如何对时间范围字段追加针对“项目状态”字段的条件??

Bluebird73  发表于:2009-03-25 23:55:23  
复制

查询中如何对时间范围字段追加针对“项目状态”字段的条件??

老师们,我有问题请教。设计了一个窗体,如图:
 
 


查询条件比较多,满足了我的管理需求。现在,我想对“日期范围”这一条件追加一个必要条件,让计算机先列出那个日期范围内对应的所有行,再去掉行中“状态名称”字段取值为“结束”或者“终止”的行,返回给用户。

我研究了好久也实现不了,没有追加时,运行是正常的,如上图所示,只是日期范围中查询出来的行不符合我的管理需要,因为里面“状态名称”字段中属于“终止”和“结束”的行也列了出来,我想去掉它们。


没有追加条件时,日期字段的表达式如下:
Between (IIf(IsNull([Forms]![FrmPrjHolder]![启动日期开始]),#1/1/1980#,[Forms]![FrmPrjHolder]![启动日期开始])) And (IIf(IsNull([Forms]![FrmPrjHolder]![启动日期截止]),#12/31/2099#,[Forms]![FrmPrjHolder]![启动日期截止])) And Between (IIf(IsNull(DateAdd("yyyy",-5,[forms]![FrmPrjHolder]![日期范围开始])),#1/1/1980#,DateAdd("yyyy",-5,[forms]![FrmPrjHolder]![日期范围开始]))) And (IIf(IsNull([Forms]![FrmPrjHolder]![日期范围截止]),#12/31/2099#,[Forms]![FrmPrjHolder]![日期范围截止]))


状态名称字段的表达式如下:
Like IIf(IsNull([Forms]![FrmPrjHolder]![状态名称]),'*','*' & [Forms]![FrmPrjHolder]![状态名称] & '*')


追加条件时,我把“状态名称”字段的表达式改为:
Like IIf(IsNull([Forms]![FrmPrjHolder]![状态名称]),IIf(IsNull([forms]![FrmPrjHolder]![日期范围开始]),IIF(IsNull([forms]![FrmPrjHolder]![日期范围截止]),'*',('进行' or '报告'))),'*' & [Forms]![FrmPrjHolder]![状态名称] & '*')

意思是说:

1)当用户在“状态名称”中没有输入东西时,如果此时日期范围内也没有输入日期值,则显示所有记录,如果此时日期范围内有值,则显示那个范围内的记录且“状态名称”字段中只取“进行”和“报告”那些行;
2)当用户在状态名称中输入了值时,显示那些值对应的行。

有没有哪位老师愿意帮助我啊?非常非常感谢。我弄了3个小时也解决不了。

 

Top
总记录:0篇  页次:0/0 9 1 :