Lee 发表于:2010-11-01 16:22:44
查询窗体中有:“年开始”、“月开始”和“年结束”、“月结束”4个文本框,作用是统计从某年某月到某年某月范围内的订单数量,所以SQL语句中我条件设为:
WHERE (year(日期)>=Forms!预算订单查询窗体!年开始 And year(日期)<=Forms!预算订单查询窗体!年结束) And (month(日期)>=Forms!预算订单查询窗体!月开始 And month(日期)<=Forms!预算订单查询窗体!月结束)
以上结果为没数据显示。
于是我把条件改为:
WHERE year(日期) Between (IIf(IsNull([Forms]![预算订单查询窗体]![年开始]),#2005-1-1#,[Forms]![预算订单查询窗体]![年开始])) And (IIf(IsNull([Forms]![预算订单查询窗体]![年结束]),#2099-12-31#,[Forms]![预算订单查询窗体]![年结束])) And month(日期) Between (IIf(IsNull([Forms]![预算订单查询窗体]![月开始]),#2005-1-1#,[Forms]![预算订单查询窗体]![月开始])) And (IIf(IsNull([Forms]![预算订单查询窗体]![月结束]),#2099-12-31#,[Forms]![预算订单查询窗体]![月结束]))
但这样得出的查询结果,一但跨年的话,统计的日期范围就不对。
不知怎样修改才正确
条件应是:>=年开始&月开始 and <=年结束&月结束
如:201001 201101
WHERE (year(日期) & month(日期)>=Forms!预算订单查询窗体!年开始 & Forms!预算订单查询窗体!月开始 And year(日期)& month(日期)<=Forms!预算订单查询窗体!年结束 & Forms!预算订单查询窗体!月结束 )
我是这样想的。供您参考。
WHERE (((Year([日期]) & Month([日期]))>=[Forms]![预算订单查询窗体]![年开始] & [Forms]![预算订单查询窗体]![月开始] And (Year([日期]) & Month([日期]))<=[Forms]![预算订单查询窗体]![年结束] & [Forms]![预算订单查询窗体]![月结束]));
按上述条件,依然是一跨年统计结果就不对。
上传附件以便研究。
点击下载此附件
那位朋友能指点迷津。
主要是月份需要用格式化显示两位。
SELECT 订单预算.日期, 订单预算.产品编号, 订单预算.数量
FROM 订单预算
WHERE (((Format([日期],"yyyymm"))>=[Forms]![预算订单查询窗体]![年开始] & Format([Forms]![预算订单查询窗体]![月开始],"00") And (Format([日期],"yyyymm"))<=[Forms]![预算订单查询窗体]![年结束] & Format([Forms]![预算订单查询窗体]![月结束],"00")));
哦原来是日期格式问题,谢谢煮江先生。
另外,语句中的"00"应怎样理解?有劳指教。
语句中的"00",是将月份控制成2位数格式。
哦明白了,谢谢。
总记录:10篇 页次:1/1 9 1 :