设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-15 23:49:10 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在表中有三个字段,第一个是月,第二个是日,第三个是开始日期(“月”和“日”为数字类型,“开始日期”为日期/时间类型)。然后再做一个查询,目的是查“结束日期”,要求是根据“开始时间”加上“年”和“月”,自动得出“结束日期”,用的公式是“结束日期: DateAdd("d",-1,DateAdd("m",表!月,DateAdd("yyyy",表!年,表!开始日期)))”。但这个公式遇到“开始日期”为2008年2月29日的时候,得出的“结束日期”就比正确的少了一天。请问这个公式如何修改?请高手指点一下。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
22#
 楼主| 发表于 2008-12-17 13:32:04 | 只看该作者
感谢版主.通过这个例子,对VBA有所长进.
21#
发表于 2008-12-17 09:00:15 | 只看该作者
我觉得太复杂了,倒不如重新设计表,先定"开始日期",后在查询中设定条件求结束日期
20#
发表于 2008-12-16 23:34:19 | 只看该作者
  1. Public Function GetEndDate(dtmStartDate As Date, intYear As Integer, intMonth _
  2.                                                                      As Integer) As Date
  3.     Dim strTemp As String
  4.     Dim dtmED As Date

  5.     strTemp = Format(dtmStartDate, "mm-dd")
  6.     dtmED = DateAdd("yyyy", intYear, DateAdd("m", intMonth, dtmStartDate)) - 1

  7.     If strTemp = "02-29" Then
  8.         If intMonth = 0 Then
  9.             If intYear Mod 4 <> 0 Then
  10.                 dtmED = DateAdd("yyyy", intYear, dtmStartDate)
  11.             End If
  12.         ElseIf intMonth Mod 12 = 0 Then
  13.             dtmED = DateAdd("yyyy", intYear, DateAdd("m", intMonth, _
  14.                                                      dtmStartDate))
  15.         End If
  16.     End If

  17.     GetEndDate = dtmED

  18. End Function
复制代码

[ 本帖最后由 Henry D. Sy 于 2008-12-16 23:36 编辑 ]
19#
 楼主| 发表于 2008-12-16 23:09:23 | 只看该作者
这个上传的文件已基本上可以用了,但就是月份是12个月或者它的倍数时,显示不正确( 少了一天)

[ 本帖最后由 明镜 于 2008-12-16 23:17 编辑 ]
18#
发表于 2008-12-16 22:41:45 | 只看该作者
原帖由 明镜 于 2008-12-16 22:34 发表
我在窗体上做了"结束日期"的控件,把属性设为更新前,然后运行这段代码,但没显示,是我做得不对,还是其他方面有问题?请指教.

本帖子中包含更多资源

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

x
17#
 楼主| 发表于 2008-12-16 22:34:33 | 只看该作者
我在窗体上做了"结束日期"的控件,把属性设为更新前,然后运行这段代码,但没显示,是我做得不对,还是其他方面有问题?请指教.
16#
发表于 2008-12-16 20:28:03 | 只看该作者
什么问题
15#
 楼主| 发表于 2008-12-16 20:05:36 | 只看该作者
谢了,   试了一下,   还是没用,   是否直接帮助做到Access中?
14#
发表于 2008-12-16 12:21:21 | 只看该作者
SELECT 表.姓名, 表.开始日期, 表.年, 表.月, GetEndDate([开始日期],[年],[月]) AS 表达式1, IIf(Format([开始日期],"mm-dd")<>"02-29",DateAdd("yyyy",[年],DateAdd("m",[月],[表]![开始日期]))-1,IIf([月]=0,IIf([年] Mod 4<>0,DateAdd("yyyy",[年],DateAdd("m",[月],[表]![开始日期])),DateAdd("yyyy",[年],DateAdd("m",[月],[表]![开始日期]))-1),DateAdd("yyyy",[年],DateAdd("m",[月],[表]![开始日期]))-1)) AS 表达式2
FROM 表
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-2 13:06 , Processed in 0.100971 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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