Foxtable(狐表)用户栏目专家坐堂 → 这段代码执行后怎么不会新增加行?


  共有1913人关注过本帖树形打印复制链接

主题:这段代码执行后怎么不会新增加行?

帅哥哟,离线,有人找我吗?
lyzhuo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:352 积分:3237 威望:0 精华:0 注册:2012/3/7 10:28:00
这段代码执行后怎么不会新增加行?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:352 积分:3237 威望:0 精华:0 注册:2012/3/7 10:28:00
  发帖心情 Post By:2017/4/17 19:42:00 [只看该作者]

这个不加判断的时候还可以正常执行,一加上判断就不能执行了

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:352 积分:3237 威望:0 精华:0 注册:2012/3/7 10:28:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:352 积分:3237 威望:0 精华:0 注册:2012/3/7 10:28:00
  发帖心情 Post By:2017/4/17 21:29:00 [只看该作者]

是,加上这段判断是否有重复人员的代码之后,不会在基本信息中插入数据了

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/4/18 8:29:00 [只看该作者]

能进入For Each ,dri 就肯定不会是空值,在For Each 里面判断循环项是否为空完全是多余的。

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

 回到顶部