设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 2904|回复: 21
打印 上一主题 下一主题

[查询] 这个“结束日期”的公式如何修改?

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-15 23:49:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在表中有三个字段,第一个是月,第二个是日,第三个是开始日期(“月”和“日”为数字类型,“开始日期”为日期/时间类型)。然后再做一个查询,目的是查“结束日期”,要求是根据“开始时间”加上“年”和“月”,自动得出“结束日期”,用的公式是“结束日期: DateAdd("d",-1,DateAdd("m",表!月,DateAdd("yyyy",表!年,表!开始日期)))”。但这个公式遇到“开始日期”为2008年2月29日的时候,得出的“结束日期”就比正确的少了一天。请问这个公式如何修改?请高手指点一下。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-12-15 23:56:47 | 只看该作者
try:
DateAdd("m",表!月,DateAdd("yyyy",表!年,表!开始日期))-1
3#
 楼主| 发表于 2008-12-16 00:07:43 | 只看该作者
谢版主,但试了一下,还是原来的问题,能否再想一个办法吗?
4#
发表于 2008-12-16 07:43:07 | 只看该作者
DateAdd("yyyy",表!年,DateAdd("m",表!月,表!开始日期))-1
5#
 楼主| 发表于 2008-12-16 08:22:13 | 只看该作者
试了一下,有时可以用,但有时计算还是出现错误!

[ 本帖最后由 明镜 于 2008-12-16 08:27 编辑 ]
6#
 楼主| 发表于 2008-12-16 08:35:53 | 只看该作者
如果查询1-3年的少了一天,但查询4年以上的就正确的,有什么办法能解决呢?

传一个附件上来,请高手看一看,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
发表于 2008-12-16 08:57:59 | 只看该作者
你干脆用天来就算
错误的原因是:你加的只是年数,而你要得到是具体到日(也就是几月几日)。
比如 2008年2月29日,今年是润年明年不是,你加1年,当然是得到 2009-02-28
8#
 楼主| 发表于 2008-12-16 10:05:30 | 只看该作者
查询的要求是,根据"开始日期"加上"年"和"月"得出结束日期,如开始日期是2007年1月1日加上1年1个月,那么结束日期就应当是2008年1月31日,如加上1年2个月就是2008年2月29日了(是计算实际的年月),
版主说的很对,因为有润年的原因,遇到2月29日就出现问题了.如开始日期为2008年2月29日加上1年应当是2009年2月28日,但查询的结果却是2009年2月27日.这说明这个问题在查询中很难做到,但在VBA中应当可以解决的,但要如何解决确是颇为困难的.
9#
发表于 2008-12-16 10:13:18 | 只看该作者
可以这样判断
当开始日期是2月29日,且 月字段为0 时,年数 mod 4 <>0,
则,设计你想要的结果。
10#
发表于 2008-12-16 10:15:19 | 只看该作者
记得,
先算增加月,然后算增加年
一般来说,只要月不为0,不会出现错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-15 16:14 , Processed in 0.080809 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表