以文本方式查看主题 - 易表在线答疑 (http://egrid2000.com/dvbbs/index.asp) -- 用户社区 (http://egrid2000.com/dvbbs/list.asp?boardid=2) ---- [求助]如何精确计算某人在某年某月某日属于何年龄段档次问题 (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=5092) |
-- 作者:tzszw -- 发布时间:2006/11/23 20:07:00 -- [求助]如何精确计算某人在某年某月某日属于何年龄段档次问题 我做的一个系统,其中涉及对人员的分段问题,搞了好长时间,我认为很好了,但用户总觉得计算不精确,特此请教一下各位。 情况是这样的: 有一个分段方法,如下 年龄段 男 女 第一年龄段 16周岁以下 16周岁以下 第二年龄段 >=16周岁<50周岁 >=16周岁<45周岁 第三年龄段 >=50周岁<60周岁 >=45周岁<55周岁 第四年龄段 >=60周岁 >=55周岁 有一个固定的截止计算时间,为2005年12月31日(这个时间也可能会变动,但不管变动不变动,其对每个人来说,都是一致的,即每个人计算的截止时间均以此为准,姑且先定为“截止时间”,另一个时间为“出生年月”)。 我目前的计算公式是: 第一年龄段:if([性别]="男",if(DaysBtw([出生年月],[截止时间])/365<[年龄段!年龄段_一_男周岁],-1,0),if(DaysBtw([出生年月],[截止时间])/365<[年龄段!年龄段_一_女周岁],-1,0)) 第二年龄段:if([性别]="男",if(DaysBtw([出生年月],[截止时间])/365>=[年龄段!年龄段_二_男周岁1] and DaysBtw([出生年月],[截止时间])/365<[年龄段!年龄段_二_男周岁2],-1,0),if(DaysBtw([出生年月],[截止时间])/365>=[年龄段!年龄段_二_女周岁1] and DaysBtw([出生年月],[截止时间])/365<[年龄段!年龄段_二_女周岁2],-1,0)) 第三年龄段:if([性别]="男",if(DaysBtw([出生年月],[截止时间])/365>=[年龄段!年龄段_三_男周岁1] and DaysBtw([出生年月],[截止时间])/365<[年龄段!年龄段_三_男周岁2],-1,0),if(DaysBtw([出生年月],[截止时间])/365>=[年龄段!年龄段_三_女周岁1] and DaysBtw([出生年月],[截止时间])/365<[年龄段!年龄段_三_女周岁2],-1,0)) 第四年龄段:if([性别]="男",if(DaysBtw([出生年月],[截止时间])/365>=[年龄段!年龄段_四_男周岁],-1,0),if(DaysBtw([出生年月],[截止时间])/365>=[年龄段!年龄段_四_女周岁],-1,0)) 要求如定位某人在某年龄段,则其必须正好是满多少周岁月落在某个年龄段的档次里。即是分“男”或“女”用其“出生年月”至“截止时间”的天数/365天计算,但这样算的话还是有误差(特别是40岁以上人员,可能是有闰年的缘故)。 如:周某,男,1946年1月7日出生,截止2005年12月31日,应属第三年龄段,因为其肯定不足60周岁(至60的应至2006年1月7日后),但却计算成第四年龄段的了。 请大家看看,是不是公式有问题,什么好建议? 谢谢! |
-- 作者:czy -- 发布时间:2006/11/23 20:13:00 -- 发文件测试吧。 |
-- 作者:czy -- 发布时间:2006/11/23 20:16:00 -- DaysBtw([出生年月],[截止时间])/365只能计算出大致的时间段,准确性值得怀疑。 |
-- 作者:tzszw -- 发布时间:2006/11/23 20:33:00 -- 下面引用由czy在 2006/11/23 08:13pm 发表的内容: 发文件测试吧。 egd文件下载 文件如上,管理员,无密码。 计算的数据在“个人开户”表中,周某为周同二(周二同) 另外,这个表好象特慢,不知何故? CZY老师,请帮忙看一下,谢谢! |
-- 作者:czy -- 发布时间:2006/11/23 20:35:00 -- 传个示例文件就可以了,怎么把整个程序都传上来了? |
-- 作者:czy -- 发布时间:2006/11/23 20:50:00 -- [这个贴子最后由czy在 2006/11/23 09:03pm 第 1 次编辑] YearFrac([出生年月],[截止时间],0)比DaysBtw([出生年月],[截止时间])/365要精确的多,你可以试试。 |
-- 作者:czy -- 发布时间:2006/11/23 20:55:00 -- 个人开户中没找到周同二? |
-- 作者:czy -- 发布时间:2006/11/23 21:05:00 -- 你所说的慢主要表现在哪些方面? |
-- 作者:czy -- 发布时间:2006/11/23 21:09:00 -- [这个贴子最后由czy在 2006/11/23 09:22pm 第 1 次编辑] 试试年龄段_第三的公式,看看是不是准确? [[性别]="男" And YearFrac([出生年月],[截止时间],0)>=[年龄段!年龄段_三_男周岁1] Or YearFrac([出生年月],[截止时间],0)<[年龄段!年龄段_三_男周岁2] Or [性别]="女" And YearFrac([出生年月],[截止时间],0)>=[年龄段!年龄段_三_女周岁1] Or YearFrac([出生年月],[截止时间],0)<[年龄段!年龄段_三_女周岁2] |
-- 作者:tzszw -- 发布时间:2006/11/23 21:19:00 -- 我试试。先谢谢! 记得我原来的公式也是用的YearFrac,后来用户说不准,就又改了。 慢主要体现在点主菜单中“参保处理”进入二级菜单,慢得令人难以忍受。以前很快的 -=-=-=- 以下内容由 tzszw 在 2006年11月23日 09:19pm 时添加 -=-=-=- 点上一条、下一条都慢得要命 |