以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  筛选条件问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190683)

--  作者:lrh9537
--  发布时间:2024/2/28 9:48:00
--  筛选条件问题
如下筛选条件:监测对象家中有义务教育阶段适龄儿童少年失学辍学(6(包含)-15岁(包含)无原因
怎么能简化些?如下代码还得在表上增加出生日期列和年龄列,想不增加这两列,通过一个函数从身份证号获取年龄

If e.DataCol.Name = "身份证号码" Then \'如果更改的是身份证号码列

    If e.DataRow.IsNull("身份证号码") Then \'身份证号码是否为空
        e.
DataRow("出生日期") = Nothing \'如果为空,则清除出生日期
   
Else
   
    \'否则从身份证号码列中提取出生日期
        e.
DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号码"))
    End
If
End
If


If e.DataCol.Name = "出生日期" Then
    If
e.DataRow.IsNull("出生日期") Then \'如果没有输入出生日期
       
e.DataRow("年龄") = Nothing \'则清空年龄
    Else
   
    \'否则计算年龄
       
e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year

    End If
End If


Filter = "易返贫致贫户监测对象类型 = \'突发严重困难户\' Or \'边缘易致贫户\' Or \'脱贫不稳定户\'  And 年龄 > 6 And 年龄< 15 在校生状况 not(小学 or 七年级 or 八年级 or 九年级) And 失学辍学原因 Is null"



--  作者:有点蓝
--  发布时间:2024/2/28 9:54:00
--  
表达式没有办法直接取年龄,只能增加辅助列。

Filter = "易返贫致贫户监测对象类型 in (\'突发严重困难户\',\'边缘易致贫户\',\'脱贫不稳定户\')  And 年龄 > 6 And 年龄< 15 and  在校生状况 not in(\'小学\' ,\'七年级\',\'八年级\',\'九年级\') And 失学辍学原因 Is null"

--  作者:lrh9537
--  发布时间:2024/2/28 15:51:00
--  
用代码增加出生日期列和年龄列怎么写,把这两段代码怎么合并到一起?
--  作者:有点蓝
--  发布时间:2024/2/28 16:11:00
--  
If e.DataCol.Name = "身份证号码" Then \'如果更改的是身份证号码列

    If e.DataRow.IsNull("身份证号码"Then \'身份证号码是否为空
        e.
DataRow("出生日期") = Nothing \'如果为空,则清除出生日期

e.DataRow("年龄") = Nothing \'则清空年龄
    
Else
    
    \'否则从身份证号码列中提取出生日期
        e.
DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号码"))

e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year
    End
 If
End
 
If



--  作者:lrh9537
--  发布时间:2024/2/28 16:31:00
--  
写在DataColChanged事件中可以,想把代码写在按钮Click上怎么改?
--  作者:有点蓝
--  发布时间:2024/2/28 16:47:00
--  
dim r as row = tables("某表").current
if r isnot nothing then

    If r.IsNull("身份证号码"Then \'身份证号码是否为空
        r
("出生日期") = Nothing \'如果为空,则清除出生日期

r("年龄") = Nothing \'则清空年龄
    
Else
    
    \'否则从身份证号码列中提取出生日期
        r
("出生日期") = ReadBirthday(r("身份证号码"))

r("年龄") = Date.Today.Year - r("出生日期").Year
    End
 If

end if