设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: 21009
打印 上一主题 下一主题

[其它] 怎么根据"出生日期",自动更新"年龄"

[复制链接]
21#
发表于 2009-3-7 21:01:15 | 只看该作者
向版主致敬,可以举一返三,凡是计算的字段等可以在查询中进行操作。
22#
发表于 2009-3-21 21:59:52 | 只看该作者
Option Compare Database
Function nianling(mynianling As Date) As String

'本函数用于计算准确年龄
Dim i%
Dim sui% '岁
Dim yue% '月
Dim ri% '日       '出处:ACCESS开发者。一切佳有可能,liting
For i = 1 To 150 '进行150次的计算估计能活到150岁以上的是不可想像的
If DateAdd("yyyy", sui + 1, mynianling) <= Date Then
sui = sui + 1
End If
Next i

For i = 1 To 13 '月份只要12次计算就足够了,这里用了13次
If DateAdd("m", sui * 12 + yue + 1, mynianling) <= Date Then
yue = yue + 1
End If
Next i
ri = Date - DateAdd("m", sui * 12 + yue, mynianling)    'Me.日龄当然就容易算了
nianling = sui & "岁" & yue & "个月" & ri & "日"
End Function

在查询里引用本函数就可以进行计算了
比如:
SELECT 报表输出.编号, nianling(出生日期) AS 年龄
FROM 报表输出;
23#
发表于 2009-3-21 22:07:09 | 只看该作者
Option Compare Database
Function nianling(mynianling As Date) As String

'本函数用于计算准确年龄
Dim i%
Dim sui% '岁
Dim yue% '月
Dim ri% '日       '出处:ACCESS开发者。一切佳有可能,liting
For i = 1 To 150 '进行150次的计算估计能活到150岁以上的是不可想像的
If DateAdd("yyyy", sui + 1, mynianling) <= Date Then
sui = sui + 1
End If
Next i

For i = 1 To 13 '月份只要12次计算就足够了,这里用了13次
If DateAdd("m", sui * 12 + yue + 1, mynianling) <= Date Then
yue = yue + 1
End If
Next i
ri = Date - DateAdd("m", sui * 12 + yue, mynianling)    'Me.日龄当然就容易算了
nianling = sui & "岁" & yue & "个月" & ri & "日"
End Function

在查询里引用本函数就可以进行计算了
比如:
SELECT 报表输出.编号, nianling(出生日期) AS 年龄
FROM 报表输出;
24#
发表于 2009-7-6 04:23:12 | 只看该作者
为什么没有必要在表中实现?如果不在表中,年龄统计怎么办?比如年龄在30~40的统计怎么做?
25#
发表于 2009-8-16 09:26:49 | 只看该作者
可是查询的时候先让我输入年龄怎么回事。。
26#
发表于 2009-9-27 22:47:34 | 只看该作者
谢谢!
27#
发表于 2015-10-16 09:58:15 | 只看该作者
多谢分享!!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-3 01:30 , Processed in 0.082292 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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