Foxtable(狐表)用户栏目专家坐堂 → [求助]AddNew()不会新增行?


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

主题:[求助]AddNew()不会新增行?

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


加好友 发短信
等级:婴狐 帖子:14 积分:190 威望:0 精华:0 注册:2017/10/15 11:57:00
[求助]AddNew()不会新增行?  发帖心情 Post By:2018/1/10 18:35:00 [只看该作者]

先在DataRowAdding事件中定义了合同单号自动生成,然后在DataColChanged事件编写以下代码没有想要的效果:为何在当前表中新增行时,《报告管理_客服员》中没有新增行(见图1),而其它几个表《财务报表_会计》、《样品管理_物料员》、《检测记录_检测员》都能自动新增一行,但我再新增一行时,《报告管理_客服员》中即将上次新增的行也补充回来了(见图2)
Select Case e.DataCol.Name
    Case "合同单号" 
        Dim dr As DataRow = DataTables("财务报表_会计").Find("合同单号 = '" & e.OldValue & "'") '定义dr为行,并在表"财务报表_会计"中找出"合同单号"为旧值的第一行
        If dr Is Nothing Then '如果没找到(即dr值为False)
            dr = DataTables("财务报表_会计").AddNew()'在表"财务报表_会计"中增加一行
            dr("合同单号") = e.DataRow("合同单号")'该新增行"合同单号"列的值等于本表新增行"合同单号"列的数值
            dr("业务员") = e.DataRow("业务员")'该新增行"业务员"列的值等于本表新增行"业务员"列的数值
            dr("合同金额") = e.DataRow("合同金额")'该新增行"合同金额"列的值等于本表新增行"合同金额"列的数值
        Else '如果找到
            dr("合同单号") = e.DataRow("合同单号")'使该表的"合同单号"数值等于本表"合同单号"列的数值
        End If
        dr = DataTables("报告管理_客服员").Find("合同单号 = '" & e.OldValue & "'") '在表"报告管理_客服员"中找出"合同单号"为旧值的第一行
        If dr Is Nothing Then '如果没找到(即dr值为False)
            dr = DataTables("报告管理_客服员").AddNew()
            dr("合同单号") = e.DataRow("合同单号")
            dr("版式") = e.DataRow("版式")
            Dim max As String
            Dim idx As Integer
            max = DataTables("报告管理_客服员").Compute("Max(编号)","[_Identify] <> " & e.DataRow("_Identify")) '取得最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max) + 1 '获得最大编号后加1
            Else
                idx = 200 '否则顺序号(起始号)等于200
            End If
            dr("报告编号") = e.DataRow("场所") & e.DataRow("领域") & Format(idx,"00000")
            dr("流水") = "--"
            MessageBox.Show("已为'报告管理'表新增一行合同单号为" & e.DataRow("合同单号") & "的数据,默认'领域'为A,'式'为1,版式为'按合同',如需变更请改变'领域'或'式'的值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            dr("合同单号") = e.DataRow("合同单号")
        End If
        dr = DataTables("样品管理_物料员").Find("合同单号 = '" & e.OldValue & "'") '在表"样品管理_物料员"中找出"合同单号"为旧值的第一行
        If dr Is Nothing Then
            dr = DataTables("样品管理_物料员").AddNew()
            dr("合同单号") = e.DataRow("合同单号")
            dr("样品名称") = e.DataRow("样品名称")
        Else
            dr("合同单号") = e.DataRow("合同单号")
        End If
        dr = DataTables("检测记录_检测员").Find("合同单号 = '" & e.OldValue & "'") '在表"检测记录_检测员"中找出"合同单号"为旧值的第一行
        If dr Is Nothing Then
            dr = DataTables("检测记录_检测员").AddNew()
            dr("合同单号") = e.DataRow("合同单号")
            dr("样品名称") = e.DataRow("样品名称")
        Else
            dr("合同单号") = e.DataRow("合同单号")
        End If
End Select

图片点击可在新窗口打开查看此主题相关图片如下:不会新增行_图1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:不会新增行_图2.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 21:20:00 [只看该作者]

首先,DataRowAdding 修改列,不会触发datacolchanged事件的。

 

其次,代码是没问题的,做个例子发上来测试。


 回到顶部