以文本方式查看主题

-  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 里面判断循环项是否为空完全是多余的。

你的逻辑有问题,先理清自己的思路