Access交流中心

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

在窗体开始时间与结束时间之间的代码像这样写行不行?

殷小宝  发表于:2010-11-17 18:18:06  
复制

这是查询的条件:Between [forms]![frm_日期区段查询]![startdate] And [forms]![frm_日期区段查询]![enddate],用了它不行,不知道怎么写,敬请会者帮一下我。谢谢!

 

Top
煮江品茶 发表于:2010-11-17 19:00:25
Between #[forms]![frm_日期区段查询]![startdate]# And #[forms]![frm_日期区段查询]![enddate]#

殷小宝  发表于:2010-11-17 20:33:16

煮江品茶老师:我按您的方法做了,出现了“日期语法错误提示”。如下图所示:

 

 



殷小宝  发表于:2010-11-17 20:43:32


殷小宝  发表于:2010-11-17 23:29:09


羽扇子君 发表于:2010-11-18 06:22:49

煮江老师的意思是,当放在VBA中时,比如运行Docmd.RunSQL时,用他的写法;

你的查询里,正常写就行啊.

我看你代码的意思,是查找某段时间内,药品的入库与出库记录,对吧?

 

如果是这样的话,根据我的经验,应该先建立2个子查询:

1.入库数量与日期子查询:

Select 药品ID,药品名称,入库数量,入库日期 As 日期 Form 入库记录 Where ((入库记录.入库日期) Between [Forms]![Frm_日期区段查询]![StartDate] And [Forms]![Frm_日期区段查询]![EndDate]);

2.出库数量与日期子查询:

Select 药品ID,药品名称,出库数量,出库日期 As 日期 Form 出库记录 Where ((出库记录.出库日期) Between [Forms]![Frm_日期区段查询]![StartDate] And [Forms]![Frm_日期区段查询]![EndDate]);

 

之后,建立联合查询[药品入出库时间轴子查询]如下:

Select [药品ID],[日期]
From 入库数量与日期的子查询
UNION
Select [药品ID],[日期]
From 出库数量与日期的子查询;

最后,建立一个目标查询[药品入出库查询]如下:

 

SELECT 药品入出库时间轴子查询.药品ID, 药品入出库时间轴子查询.日期, 入库数量与日期子查询.入库数量, 出库数量与日期子查询.出库数量
FROM (药品入出库时间轴子查询 LEFT JOIN 入库数量与日期子查询 ON (药品入出库时间轴子查询.日期 = 入库数量与日期子查询.日期) AND (药品入出库时间轴子查询.药品ID = 入库数量与日期子查询.药品ID)) LEFT JOIN 出库数量与日期子查询 ON (药品入出库时间轴子查询.日期 = 出库数量与日期子查询.日期) AND (药品入出库时间轴子查询.药品ID = 出库数量与日期子查询.药品ID)
ORDER BY 药品入出库时间轴子查询.药品ID;

 



羽扇子君 发表于:2010-11-18 06:29:48

这个论坛很怪,回贴编辑时间一长,就说要重新登录,已经多少次了.每次都是写了很多,白写了--严重影响 我的心情.

下面给你讲一下这些查询的意义:

1.入库数量与日期子查询

这个是查询条件窗体--[Frm_日期区段查询]给出的时间段内,入库药品的日期和数量;

2.出库数量与日期子查询

这个是查询条件窗体--[Frm_日期区段查询]给出的时间段内,出库药品的日期和数量;

3.药品入出库时间轴子查询

这个联合查询,得出了包含所有符合条件窗体给出的时间段的药品ID,及入出库日期;

4.目标查询--可以是报表的记录源查询:

它利用前面3个查询,得出一个完整的结果



殷小宝  发表于:2010-11-18 21:19:12
羽扇子君老师,非常感谢您花了这么多时间为我回答问题,这种精神令我感动。每次在提交回复时一定要先复制备份,这样写的东西才不会丢失。我研究了您的代码好半天,觉得您将日期作为出库时间及入库时间,这一步非常高明,联合查询只选用了两个字段:药品ID和日期,而且只用了一个“UNION”,没用“UNION ALL”,[日期]相当于两个字段,一个是入库时间,一个是出库时间,不可能重叠在一个字段里,所以没有重复的记录。最后用左外连接将符合条件的入库数量加了进来,再用一个左外连接再将出库数量添加进来,合起来一个大表,我要达到的目的是:药品ID分组统计这段时间的入库总量及出库总量、结余量,这一步很简单了。羽扇子君老师,我这样理解对不对,敬请指导。太感谢您了。我的原程序是:点击下载此附件

羽扇子君 发表于:2010-11-19 03:46:57

网速慢,未能下载你的附件,很遗憾;

以前看过你的问题,也是写了一堆让你整改的:包括你要建立一个[药品资料表],上面字段有[药品ID]、[药品名称]、[规格]、[类别]、[单价]、

你的表的架构存在严重的不合理情况,因此你的建立在表基础上的其它对象:包括(且不止于)查询、窗体、报表将都不合理,且绕弯;

 

点击下载此附件里面只给你改了表的设计,操作顺序在[操作记录表]中有体现.你参悟一下.

这个本来是在你“确认消耗”问题里写的,只因论坛原因没能发上来.表的设计,请参见:

http://www.accessoft.com/bbs/showtopic.asp?ID=10371



殷小宝  发表于:2010-11-19 21:45:26
谢谢羽扇子君老师这么关心帮助我,我对您的建议好好地领悟领悟。

殷小宝  发表于:2010-11-24 15:07:35
事实上在联合查询中用我原来的代码完全可以:Between [forms]![frm_日期区段查询]![startdate] And [forms]![frm_日期区段查询]![enddate],无需加用“#”

总记录:10篇  页次:1/1 9 1 :