Access交流中心

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

一个查询求助,订单抓取报价的单价的问题。

子煜  发表于:2013-06-19 14:35:53  
复制

见附档查询:

db1

 

问题:

一款产品会有很多次报价,也就有很多笔记录,但都会以“生效日期”来区别。。

比如以下记录,从2013-6-10起的订单价格为1.36

编号 型号 厚度 生效日期 单价
1 EC 0.6 2013-6-10 1.36

 

现在如何利用订单日期来判断抓取对应的单价呢??

附档的查询正确结果应该如下:

型号 厚度 生效日期 订单日期 订单重量 单价 金额
EC 0.6 2013/6/10 2013/6/17 500 1.36 680
EC 0.6 2013/6/18 2016/6/19 600 1.35 810
EC 0.6 2013/6/20 2013/6/21 700 1.38 966

 

请高手指点,谢谢!!!

 

 

Top
煮江品茶 发表于:2013-06-19 14:45:46

取订单日期之前的最大生效日期时的报价即可,请参见:

http://www.accessoft.com/article-show.asp?id=5269



子煜 发表于:2013-06-19 14:57:05
楼上没有理解意思,我是要根据订单日期来判断的,抓取对应单价的。。

煮江品茶 发表于:2013-06-19 15:27:52
呵呵,不会是没理解,而是精准的说明了处理方法。

子煜 发表于:2013-06-19 15:32:36

我不是要最后的生效日期啊???

生效日期也要根据订单日期的。。



煮江品茶 发表于:2013-06-19 15:42:56

鬼打架,我说的最后日期是有定语的。

不就这么简单的查询吗:

SELECT 订单.*, DMax("生效日期","报价","型号='" & [型号] & "' and 生效日期<=#" & [订单日期] & "#") AS 生效日期, DLookUp("单价","报价","型号='" & [型号] & "' and 生效日期=#" & [生效日期] & "#") AS 单价
FROM 订单;




子煜 发表于:2013-06-19 16:16:49

结果貌似不对哦。。。

 

另外

这样查询数据量大的话不会很慢吗??

是不是要改表结构或换思路呢?



子煜 发表于:2013-06-19 16:27:06

输出结果不对:

第二条记录 对应 生效日期应该是 2013-6-18,单价是 1.35 

查询2
编号 型号 厚度 生效日期 订单日期 单价 订单重量
1 EC 0.6 2013-6-10 2013-6-17 1.36 500
2 EC 0.6 2013-6-20 2016-6-19 1.38 600
3 EC 0.6 2013-6-20 2013-6-21 1.38 700

 



烟寒若雨 发表于:2013-06-19 17:43:50
SELECT 报价.编号, 报价.型号, 报价.厚度, 报价.生效日期, 报价.单价, 订单.订单日期, 订单.订单重量
FROM 订单 INNER JOIN 报价 ON (订单.型号 = 报价.型号) AND (订单.编号 = 报价.编号);


烟寒若雨 发表于:2013-06-19 17:50:02
表结构不合理,这样只能是一对一的关系。

在水一方 发表于:2013-06-19 23:10:39

增加一个’截止日期‘字段就可以了�������ش˸���

 



在水一方 发表于:2013-06-19 23:19:09

补充一点:

其实不改变表结构也可以,但是需要多建立一个查询,查询出‘小于订单日期的报价生效日期的最大值的生效日期。然后再查询出相应日期的报价,比较麻烦,速度慢。

有截止日期就简单多了,注意所有的记录都要有截止日期(最后的报价截止日期可以假设为2099-12-31,不然会查询不出来。



烟寒若雨 发表于:2013-06-20 07:26:47
楼上的,总会有报价的,没办法确定那个是最后的

子煜 发表于:2013-06-21 15:12:29
请问 截止日期 栏的日期 是如何更新过去的呢???手动添加吗?

煮江品茶 发表于:2013-06-21 15:32:56
添加截止日期是馊主意

子煜 发表于:2013-06-27 16:09:49

用了 煮江品茶 老师的查询是可以实现,,但记录太多在使用速度非常慢,甚至卡死报错。。

所以不知老师们能否换个思路,或者利用VBA等其他方法实现了。。



煮江品茶 发表于:2013-06-27 18:06:36

建立价格表和订单表之间的一对多关系,然后用查询将价格引入到订单中即可。你可以试试这个方法,一定速度超快。

具体处理方法参见:http://www.accessoft.com/article-show.asp?id=8422



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