以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 根据出生日期计算年龄月龄及日龄的代码(医学相关) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25218)
|
-- 作者:sxdoc
-- 发布时间:2012/11/3 20:36:00
-- 根据出生日期计算年龄月龄及日龄的代码(医学相关)
If e.DataCol.Name = "出生日期" Then If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期 Else \'否则计算年龄 e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year End If If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期 e.DataRow("月龄") = Nothing \'则清空年龄 Else \'否则计算月龄 e.DataRow("月龄") = Date.Today.month - e.DataRow("出生日期").month If e.DataRow("月龄") < 0 Then \'如果月龄小于0 e.DataRow("月龄") = e.DataRow("月龄") + 12 e.DataRow("年龄") = e.DataRow("年龄") -1 End If End If If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期 e.DataRow("日龄") = Nothing \'则清空年龄 Else \'否则计算日龄 e.DataRow("日龄") = Date.Today.day - e.DataRow("出生日期").day + 1 If e.DataRow("日龄") < 0 Then \'如果日龄小于0 e.DataRow("日龄") = 30 + e.DataRow("日龄") e.DataRow("月龄") = e.DataRow("月龄") -1 End If End If End If If e.DataCol.Name = "患者姓名" Then \'如果更改的是姓名列 If e.DataRow.IsNull("患者姓名") Then \'姓名是否为空 e.DataRow("拼音码") = Nothing \'如果为空,则清除拼音码 Else \'否则从姓名列中提取拼音码 e.DataRow("拼音码") = GetPY(e.DataRow("患者姓名"),True) End If End If
|
-- 作者:sxdoc
-- 发布时间:2012/11/3 21:11:00
--
上面的有错,下面对
If e.DataCol.Name = "出生日期" Then If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期 Else \'否则计算年龄 e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year End If If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期 e.DataRow("月龄") = Nothing \'则清空月龄 Else \'否则计算月龄 e.DataRow("月龄") = Date.Today.month - e.DataRow("出生日期").month If e.DataRow("月龄") < 0 Then \'如果月龄小于0 e.DataRow("月龄") = e.DataRow("月龄") + 12 e.DataRow("年龄") = e.DataRow("年龄") -1 End If End If If e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期 e.DataRow("日龄") = Nothing \'则清空日龄 Else \'否则计算日龄 e.DataRow("日龄") = Date.Today.day - e.DataRow("出生日期").day + 1 If e.DataRow("日龄") < 0 Then \'如果日龄小于0 Dim intInputMonth As Integer = e.DataRow("出生日期").month \'这是出生的月份 Dim dt As New DateTime(DateTime.Today.Year, intInputMonth, 1) \'计算该月份的天数 Dim days As Integer = dt.AddMonths(1).DayOfYear - dt.DayOfYear \'该月份的天数 e.DataRow("日龄") = days + e.DataRow("日龄") e.DataRow("月龄") = e.DataRow("月龄") -1 End If End If End If
这样计算出的一个人的年龄月龄日龄才符合实际
(开处方时3岁以上写年龄,1-3岁要写年月龄,三个月到1岁写月日龄,满月内写日龄)
|
-- 作者:擎天柱
-- 发布时间:2012/11/3 21:18:00
--
如果用DateYMD,可能会简化一点
|
-- 作者:擎天柱
-- 发布时间:2012/11/3 21:21:00
--
再用TimeSpan
|
-- 作者:sxdoc
-- 发布时间:2012/11/3 21:53:00
--
见笑了
|
-- 作者:sxdoc
-- 发布时间:2012/11/3 23:11:00
--
If e.DataCol.Name = "登记时间" Then \'如果登记里间列的内容变动 Dim d1 As Date = e.DataRow("登记时间") Dim d2 As Date = now Dim t As TimeSpan = d2 - d1 End If e.DataRow("登记未来小时数") = t.Hours e.DataRow("登记未来天数") = t.Days
|
-- 作者:sxdoc
-- 发布时间:2012/11/3 23:13:00
--
此主题相关图片如下:无标题.png
|
-- 作者:sxdoc
-- 发布时间:2012/11/3 23:16:00
--
If e.DataCol.Name = "登记时间" Then \'如果登记里间列的内容变动 Dim d1 As Date = e.DataRow("登记时间") Dim d2 As Date = now Dim t As TimeSpan = d2 - d1 e.DataRow("登记未来小时数") = t.Hours e.DataRow("登记未来天数") = t.Days End If
|