PB itemchanged(long row,dwobject dwo,string data)事件,失去焦点后发生

itemchanged事件在datawindow里的字段被修改并且失去焦点后发生,当然在Update函数被调用之前也会触发这个事件:itemchanged(long row,dwobject dwo,string data)
long row ,表示当前行
dwobject dwo,表示datawindow里的字段
string data, 表示new data也就是刚刚输入的数据

return Values

      0   (默认)  接收数据,并转移焦点到下一行

      1   拒绝输入的数据,并焦点不转移

      2    拒绝数据的输入,但转移焦点到下一行,并且数据不改变,跟修改之前一样

根据身份证号码来得出出生日期 代码片.

String ls_identno			//身份证号码
String ls_biryear			//出生年
String ls_birmonth		//出生月
String ls_birday 			//出生日
String ls_birplace		//出生地点
datetime ldt_sys			//系统日期
date ld_sys
Date ld_birth				//出生日期
Integer li_age				//年龄
Integer li_sysyeau		//系统年
Integer li_identno		//身份证长度(15/18位)
Integer li_sex				//性别,月日的整数
  
//将“漂浮”在数据窗口控件上编辑框的内容放入到数据窗口控件的当前项中(主缓区中)。
//在将数据放入到当前项之前,编辑框中的数据必须通过有效性规则检查
this.AcceptText()
//SetNull()功能将指定变量的值设置为NULL。这里的变量可以是除数组、结构、自动实例化对象之外的任何数据类型。
//setNull(ls_null)

//dwo就是dwobject,dwobject是数据窗口(datawindow)对象,比如datawindow里的列,文本,按钮等.
Choose case dwo.name
	Case "id_card_no"
		//身份证号15/18位,格式:行政区代码6位+出生日期(6/8)位+序号(3/4位)
		//由身份证号获得:病人出生日期,出生地,性别
		ls_identno = data
		if ls_identno = "" or isnull(ls_identno) then 
			return
		end if 
			//Len() :得到Blob类型变量的数据长度,以字节为单位。 
			//身份证长度 = len(身份证号码)
			li_identno = len(ls_identno)
			//如果身份证号长度为15或者18
			if li_identno = 15 or li_identno = 18 then
				/**
				Left():得到字符串左部指定个数的字符。
				语法:Left ( string, n )string:
				string类型,指定要提取子串的字符串。
				n:long类型,指定子串长度。
				*/
				//出生地 = left(身份证号,左边6位数)
				ls_birplace = left(ls_identno,6)
				// li_identno = 15
				if li_identno = 15 then
					/**
					Trim():删除字符串首部和尾部的空格。
					语法:Trim ( string )。参数string:string类型,指定要删除首部和尾部空格的字符串返回值String。
					函数执行成功时返回删除了string字符串首部和尾部空格的字符串,发生错误时返回空字符串("")。
					如果任何参数的值为NULL,Trim()函数返回NULL。
					*/
					// c出生年 = ‘19’+ mid(要截取的字符串,开始位置,截取长度)
					ls_biryear = '19'+ trim(mid(ls_identno,7,2))
					//出生月
					ls_birmonth = mid(ls_identno,11,2)
				else 
					//mid(截取的字符串,开始截取位置,截取长度)
					ls_biryear = trim(mid(ls_identno,7,4))
					ls_birmonth = mid(ls_identno,11,2)
										
				end if 
				
				if li_identno = 15 then 
					ls_birday = mid(ls_identno,11,2)
				else
					ls_birday = mid(ls_identno,13,2)
				end if 
				//出生日期    date:将三个表示年、月、日的整数组合成一个日期 语法:date(year,month,day)
				ld_birth = date(integer(ls_biryear),integer(ls_birmonth),integer(ls_birday))
				this.setitem(row,"SICK_BIRTHDATE",ld_birth)
				
			end if 
end Choose

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值