以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 这段代码执行后怎么不会新增加行? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99348) |
-- 作者:lyzhuo -- 发布时间:2017/4/17 19:01:00 -- 这段代码执行后怎么不会新增加行? If e.Row("变动类型") = "1.新增" Then Dim drs As List(of DataRow) = e.Row.DataRow.GetChildRows("变动明细表") For Each dr As DataRow In drs If dr.IsNull("变动类型") Or dr.IsNull("调入单位") Or dr.IsNull("姓名") Or dr.IsNull("身份证号") Or dr.IsNull("供给性质") Or dr.IsNull("变动原因") Or dr.IsNull("工资基数") Or dr.IsNull("起始月份") Or dr.Isnull("结束月份") Or dr.IsNull("备注") Then MessageBox.Show("★录入项目不全(或结束日期未改动)! ★请补全录入项目!","提示") Else For Each dri As DataRow In DataTables("基本信息").Select("身份证号 = \'" & dr("身份证号") & "\' And 单位 = \'" & left(dr("调入单位"),6) & "\'") If dri IsNot Nothing Then MessageBox.Show("★原表中已存在此人员! ★请检查注意重复!","提示") Return Else dri = DataTables("基本信息").AddNew() dri("状态") = "已审核" dri("单位") = left(dr("调入单位"),6) dri("姓名") = dr("姓名") dri("性质") = dr("供给性质") dri("身份证号") = dr("身份证号") dri("职工账号") = dr("公积金账号") dri("确认") = 1 dri("补拨补扣上年") = dr("补拨补扣上年") dri("上年12月份工资") = dr("工资基数") dri("起始月份") = dr("起始月份") dri("结束月份") = 12 dri("备注") = dr("备注") dri.Locked = True DataTables("基本信息").Save() End If Next For Each dra As DataRow In DataTables("基本信息").Select("身份证号 = \'" & dr("身份证号") & "\' And 单位 = \'" & left(dr("调入单位"),6) & "\'") dr("月补助数_合计") = dra("基数") dr("月补助数_单位负担") = dra("月缴基数") Next dr.Locked = True Dim prs As DataRow = dr.GetParentRow("变动表") prs("执行") = "√" End If Next End If |
-- 作者:lyzhuo -- 发布时间:2017/4/17 19:42:00 -- 这个不加判断的时候还可以正常执行,一加上判断就不能执行了 |
-- 作者:有点色 -- 发布时间:2017/4/17 19:45:00 -- 加这个判断出问题?
If dr.IsNull("变动类型") Or dr.IsNull("调入单位") Or dr.IsNull("姓名") Or dr.IsNull("身份证号") Or dr.IsNull("供给性质") Or dr.IsNull("变动原因") Or dr.IsNull("工资基数") Or dr.IsNull("起始月份") Or dr.Isnull("结束月份") Or dr.IsNull("备注") Then
你可以单独弹出各个值,看是否满足条件。如代码 msgbox(dr.IsNull("变动类型")) |
-- 作者:lyzhuo -- 发布时间:2017/4/17 21:28:00 -- For Each dri As DataRow In DataTables("基本信息").Select("身份证号 = \'" & dr("身份证号") & "\' And 单位 = \'" & left(dr("调入单位"),6) & "\'") If dri IsNot Nothing Then MessageBox.Show("★原表中已存在此人员! ★请检查注意重复!","提示") Return Else dri = DataTables("基本信息").AddNew() dri("状态") = "已审核" dri("单位") = left(dr("调入单位"),6) dri("姓名") = dr("姓名") dri("性质") = dr("供给性质") dri("身份证号") = dr("身份证号") dri("职工账号") = dr("公积金账号") dri("确认") = 1 dri("补拨补扣上年") = dr("补拨补扣上年") dri("上年12月份工资") = dr("工资基数") dri("起始月份") = dr("起始月份") dri("结束月份") = 12 dri("备注") = dr("备注") dri.Locked = True DataTables("基本信息").Save() End If
|
-- 作者:lyzhuo -- 发布时间:2017/4/17 21:29:00 -- 是,加上这段判断是否有重复人员的代码之后,不会在基本信息中插入数据了 |
-- 作者:有点蓝 -- 发布时间:2017/4/18 8:29:00 -- 能进入For Each ,dri 就肯定不会是空值,在For Each 里面判断循环项是否为空完全是多余的。 你的逻辑有问题,先理清自己的思路
|