以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  复制行过程中合并参数系统的行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=94744)

--  作者:lk15502
--  发布时间:2016/12/31 11:17:00
--  复制行过程中合并参数系统的行
老师。下面的代码是从A表向B表复制行的代码,想实现这样的功能,把:品名大类,品名小类,成品克重,成品门幅,颜色染色订单号,色号。相同的行合并成一行,怎么在里面加代码?谢谢!
If _userroles.Contains("计划配缸") = True OrElse _usergroup = "原料坯布仓库" Then
    If Tables(e.Form.Name & "_table2").current IsNot Nothing Then
        For Each r1 As Row In Tables(e.Form.Name & "_table2").Rows
            Dim Cols1() As String = {"订单明细编号","销售人员","客户","客户编号","品名大类","品名小类","成品克重","成品门幅","颜色","染色订单号","色号","投坯","使用坯布规格","卡注要求"}
            Dim Cols2() As String = {"订单明细编号对外","销售人员","客户","客户编号","品名大类","品名小类","成品克重","成品门幅","颜色","染色订单号","色号","计划重量","坯布规格","卡注"}
            If r1("下一工序").Contains("配缸") = True AndAlso DataTables("计划配缸通知单").sqlfind("订单明细编号对外 = \'" & r1("订单明细编号") & "\'") Is Nothing Then
                Dim r2 As Row = Tables("计划配缸通知单").addnew()
                For i As Integer = 0 To Cols1.length -1
                    If r1.Isnull(Cols1(i)) = False Then
                        r2(Cols2(i)) = r1(Cols1(i))
                    End If
                Next
                r2.save
            End If
        Next
        Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
        tab.Selectedpage = tab.TabPages("计划配缸")
    End If
Else
    msgbox("您没有权限操作!")
End If

--  作者:lk15502
--  发布时间:2016/12/31 11:28:00
--  
不好意思,标题写错了,应该是:复制行过程中合并参数相同的行
--  作者:有点色
--  发布时间:2016/12/31 11:38:00
--  
If _userroles.Contains("计划配缸") = True OrElse _usergroup = "原料坯布仓库" Then
    If Tables(e.Form.Name & "_table2").current IsNot Nothing Then
        For Each r1 As Row In Tables(e.Form.Name & "_table2").Rows
            Dim Cols1() As String = {"订单明细编号","销售人员","客户","客户编号","品名大类","品名小类","成品克重","成品门幅","颜色","染色订单号","色号","使用坯布规格","卡注要求"}
            Dim Cols2() As String = {"订单明细编号对外","销售人员","客户","客户编号","品名大类","品名小类","成品克重","成品门幅","颜色","染色订单号","色号","坯布规格","卡注"}
            If r1("下一工序").Contains("配缸") = True AndAlso DataTables("计划配缸通知单").sqlfind("订单明细编号对外 = \'" & r1("订单明细编号") & "\'") Is Nothing Then
                Dim r2 As DataRow = DataTables("计划配缸通知单").find("品名大类 = \'" & r1("品名大类") & "\' and 品名小类 = \'" & r1("品名小类") & "\' and 成品克重 = \'" & r1("成品克重") & "\'")
                If r2 Is Nothing Then r2 = DataTables("计划配缸通知单").addnew
                For i As Integer = 0 To Cols1.length -1
                    If r1.Isnull(Cols1(i)) = False Then
                        r2(Cols2(i)) = r1(Cols1(i))
                    End If
                Next
                r2("计划重量") += r1("投坯")
                r2.save
            End If
        Next
        Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
        tab.Selectedpage = tab.TabPages("计划配缸")
    End If
Else
    msgbox("您没有权限操作!")
End If
[此贴子已经被作者于2016/12/31 11:38:05编辑过]

--  作者:lk15502
--  发布时间:2016/12/31 12:10:00
--  
If r2 Is Nothing Then r2 = DataTables("计划配缸通知单").addnew
如果r2 isnot nothing 代码会怎么执行,上面的代码最后没有end,有一点看不懂

--  作者:有点色
--  发布时间:2016/12/31 12:11:00
--  

 如果r2存在,就直接用那个查到的r2,否则,就新增一行赋值给r2