Access交流中心

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

查询中增加一列,计算出前一列对应的日期

xt307  发表于:2011-09-09 11:27:39  
复制

请看附件

我有一个表,现在想建一个查询,在查询里增加一个列,这个列的功能是将表的“schedule date”字段转换成该日期那周的第一天也就是周日的日期。

比如“schedule date”为10/14/2011转换成10/9/2011

 

在使用这个查询时,还希望系统可以提示用户输入一个当前日期

如果“schedule date”比当前日期早,也就是过期了,将该日期改成当前日期所在周的第一天。

比如当前日期是9/9/2011

如果“schedule date”是8/29/2011,希望转换成9/4/2011

 

给点帮助吧

点击下载此附件

 

Top
都市侠影 发表于:2011-09-09 12:27:32

第一个问题,查询语句:

SELECT DateAdd("d",1-Weekday([Schedule Date]),[Schedule Date]) AS 本周周日, *
FROM MDS;

查询结果:




煮江品茶 发表于:2011-09-09 12:28:53
select *,DateAdd("d",-1*(Weekday(iif([schedule date]>Date,[schedule date],Date),VbSunday)-1),[schedule date]) as Sunday from tbname

都市侠影 发表于:2011-09-09 12:38:06

第二个问题,建立含参数的更新查询。

UPDATE MDS SET [Schedule Date] = DateAdd("d",1-Weekday([Schedule Date]),[当前日期])
WHERE DateDiff("d",[Schedule Date],当前日期)>0;



xt307 发表于:2011-09-09 14:59:05

都市侠影,谢谢您的高招

 

就第二个问题,能否在查询中处理。也就是说,先弹出窗口询问当前日期,然后一次性将问题一问题二体现在新增加的字段里呢?

 

谢谢



都市侠影 发表于:2011-09-09 20:46:39

第二个问题本来就是在查询中处理的呀,建立查询将语句粘贴进去即可,运行的时候会弹出一个对话框以输入当前日期。至于“然后一次性将问题一问题二体现在新增加的字段里呢?”,没明白意思



xt307 发表于:2011-09-14 21:07:58

第二个问题,建立含参数的更新查询。

UPDATE MDS SET [Schedule Date] = DateAdd("d",1-Weekday([Schedule Date]),[当前日期])
WHERE DateDiff("d",[Schedule Date],当前日期)>0;



都市侠影,我试了您的SQL语句,这个语句更改了MDS表。我想保留MDS的原数据,希望只是在查询中修正过期的“本周周日”
 
谢谢


xt307 发表于:2011-09-14 21:16:09
煮江品茶 (等级: 管理员 积分:2636 城市:武汉) 发表于2011-9-9 12:28:53 
最佳答案 2楼 得分: 0
select *,DateAdd("d",-1*(Weekday(iif([schedule date]>Date,[schedule date],Date),VbSunday)-1),[schedule date]) as Sunday from tbname

上面的语句vb函数vbsunday似乎无法被调用


都市侠影 发表于:2011-09-15 12:58:35

在查询1的基础上实现即可,查询语句:

SELECT IIF(当前日期>本周周日,当前日期,本周周日) AS 字段名称, 查询1.ID, 查询1.Project, 查询1.[Part Number], 查询1.[Current Qty], 查询1.[Schedule Date]
FROM 查询1;

查询结果:(参数“当前日期”输入2011-08-01的查询结果)



都市侠影 发表于:2011-09-15 12:59:46
另外你所谓的当前日期是否指今天的日期,如果是的话不必用参数输入,直接用函数Date即可。

xt307 发表于:2011-09-16 13:47:06
很有帮助,有劳了!

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