以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]项目数据批量拆分  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=23585)

--  作者:lxhmax
--  发布时间:2012/9/13 12:08:00
--  [求助]项目数据批量拆分

 

    求教:对于将数据拆分的情况现在是这样子的,如表上所示每次只能将一行的数据拆分开来;

  

       请问下,我现在想将表1的3个编号的项目或者更多的项目批量拆分到表3,这个要怎么弄;

                   如何避免拆分添加数据的时候重复拆分?

                      谢谢啦~

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目数据批量拆分.table


--  作者:czy
--  发布时间:2012/9/13 13:40:00
--  

怎么叫重复?如何来区分重复?是以委托编号来区分吗?


--  作者:czy
--  发布时间:2012/9/13 13:58:00
--  

感觉好烦啊

 

Tables("表C").StopRedraw
Dim Arys As List(Of String())
Arys = DataTables("表A").GetUniqueValues("委托编号 is not null", "委托编号","委托项目")
For Each Ary As String() In Arys
    Dim s As String = Ary(1)
    Dim Values() As String = s.split(",")
    For i As Integer = 0 To Values.Length - 1
        Dim Arys1 As List(Of String())
        Arys1 = DataTables("表D").GetUniqueValues("委托项目 = \'" & Values(i) & "\'", "项目依据","项目明细","明细依据","项目单位")
        For Each Ary1 As String() In Arys1
            Dim dr As DataRow
            dr = DataTables("表C").Find("委托编号 = \'" & Ary(0) & "\' and 委托项目 = \'" & Values(i) & "\' and 项目依据 = \'" & Ary1(0) & "\' and 项目明细 = \'" & Ary1(1) & "\' and 明细依据 = \'" & Ary1(2) & "\' and 项目单位 = \'" & Ary1(3) & "\'")
            If dr Is Nothing Then
                Dim r As Row = Tables("表C").AddNew()
                r("委托编号") = Ary(0)
                r("委托项目") = Values(i)
                r("项目依据") = Ary1(0)
                r("项目明细") = Ary1(1)
                r("明细依据") = Ary1(2)
                r("项目单位") = Ary1(3)
            End If
        Next
    Next
Next
Tables("表C").ResumeRedraw


--  作者:lxhmax
--  发布时间:2012/9/13 16:02:00
--  

嘻嘻~太感谢你的帮助了~谢谢你的不厌其烦~有点小问题要继续请教下:

 

请问下我这样改了之后有什么问题吗?  有些数据会重复添加,有些又不会!?

还有个小小要求,我可以根据我选中的内容来拆分添加吗?

 

Tables("流转记录表").StopRedraw
Dim Arys As List(Of String())
Arys = DataTables("样品信息").GetUniqueValues("", "样品编号","检测项目")
For Each Ary As String() In Arys
    Dim s As String = Ary(1)
    Dim Values() As String = s.split(",")
    For i As Integer = 0 To Values.Length - 1
        Dim Arys1 As List(Of String())
        Arys1 = DataTables("检测项目").GetUniqueValues("流转项目 = \'" & Values(i) & "\'", "检测项目","检测依据","检测部门","检测费用","费用说明")
        For Each Ary1 As String() In Arys1
            Dim dr As DataRow
            dr = DataTables("流转记录表").Find("样品编号 = \'" & Ary(0) & "\' and 流转项目 = \'" & Values(i) & "\' and 检测项目 = \'" & Ary1(0) & "\' and 检测依据 = \'" & Ary1(1) & "\' and 检测部门 = \'" & Ary1(2) & "\' and 检测费用 = \'" & Ary1(3) & "\' and 费用说明 = \'" & Ary1(4) &  "\'")
            If dr Is Nothing Then
                Dim r As Row = Tables("流转记录表").AddNew()
                r("样品编号") = Ary(0)
                r("流转项目") = Values(i)
                r("检测项目") = Ary1(0)
                r("检测依据") = Ary1(1)
                r("检测部门") = Ary1(2)
                r("检测费用") = Ary1(3)
                r("费用说明") = Ary1(4)
            End If
        Next
    Next
Next
Tables("流转记录表").ResumeRedraw

 


--  作者:lin_hailun
--  发布时间:2012/9/13 17:10:00
--  
 第一个问题,会不会是你【样品信息】表有重复的【样品编号】?

 导致,数据重复添加?

--  作者:lin_hailun
--  发布时间:2012/9/13 17:13:00
--  
第二个问题,参考

http://www.foxtable.com/help/topics/1665.htm

--  作者:lxhmax
--  发布时间:2012/9/13 17:33:00
--  

dr = DataTables("流转记录表").Find("样品编号 = \'" & Ary(0) & "\' and 流转项目 = \'" & Values(i) & "\' and 检测项目 = \'" & Ary1(0) & "\' and 检测依据 = \'" & Ary1(1) & "\' and 检测部门 = \'" & Ary1(2) & "\' and 检测费用 = \'" & Ary1(3) & "\' and 费用说明 = \'" & Ary1(4) &  "\'")

 

我把这条数据改成

 

dr = DataTables("流转记录表").Find("样品编号 = \'" & Ary(0) & "\' and 流转项目 = \'" & Values(i) & "\' “)

 

这样就不会重复了~!

 

其实我还不是很懂什么原因~!


--  作者:lin_hailun
--  发布时间:2012/9/13 17:44:00
--  
以下是引用lxhmax在2012-9-13 17:33:00的发言:

dr = DataTables("流转记录表").Find("样品编号 = \'" & Ary(0) & "\' and 流转项目 = \'" & Values(i) & "\' and 检测项目 = \'" & Ary1(0) & "\' and 检测依据 = \'" & Ary1(1) & "\' and 检测部门 = \'" & Ary1(2) & "\' and 检测费用 = \'" & Ary1(3) & "\' and 费用说明 = \'" & Ary1(4) &  "\'")

 

我把这条数据改成

 

dr = DataTables("流转记录表").Find("样品编号 = \'" & Ary(0) & "\' and 流转项目 = \'" & Values(i) & "\' “)

 

这样就不会重复了~!

 

其实我还不是很懂什么原因~!


后面的列有空值吗?
--  作者:lxhmax
--  发布时间:2012/9/13 20:56:00
--  
有两列是空值来的~!
--  作者:lin_hailun
--  发布时间:2012/9/14 9:07:00
--  
 空值不能直接比较。

 比如 费用说明 是空值

 需要这样比较:"费用说明 is Null And " & "\'" & Ary1(4) & "\' = \'\'"