以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]一列拆分成多列代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=58930)

--  作者:ZHX88863808
--  发布时间:2014/10/26 20:34:00
--  [求助]一列拆分成多列代码
请求前辈老师们帮写个一列拆分成多列的代码,如:A列拆分成B列、C列、D列,具体情况看项目,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:一列拆分多列.table


--  作者:有点甜
--  发布时间:2014/10/26 20:49:00
--  

 datacolchanged,代码,你这种情况是不好判断的,必须有规律才能拆分的。

 

If e.DataCol.Name = "A" Then
    If e.NewValue = Nothing Then
        e.DataRow("B") = Nothing
        e.DataRow("C") = Nothing
        e.DataRow("D") = Nothing
    Else
        Dim chars() As Char = {"/", "-"}
        Dim ary() As String = e.NewValue.split(Chars)
       
        For i As Integer = 0 To ary.Length - 1
            If ary(i).EndsWith("省") OrElse ary(i).Contains("上海") Then
                e.DataRow("B") = ary(i)
            Else If ary(i).EndsWith("市") OrElse ary(i).EndsWith("区") Then
                e.DataRow("C") = ary(i)
            Else If ary(i).EndsWith("县") OrElse ary(i).EndsWith("路") Then
                e.DataRow("D") = ary(i)
            End If
        Next
    End If
End If


--  作者:y2287958
--  发布时间:2014/10/26 20:54:00
--  
For Each dr As DataRow In DataTables("表A").DataRows
    If dr.IsNull("A") = False
        dr("B") = dr("A").split("/")(0)
        If dr("A").split("/")(1).contains("-")
            dr("C") = dr("A").split("/")(1).split("-")(0)
            dr("D") = dr("A").split("/")(1).split("-")(1)
        Else
            dr("C") = Nothing
            dr("D") = dr("A").split("/")(1).split("-")(0)
        End If
    Else
        dr("B") = Nothing
        dr("C") = Nothing
        dr("D") = Nothing       
    End If
Next

--  作者:ZHX88863808
--  发布时间:2014/10/26 21:13:00
--  
谢谢老师!
--  作者:ZHX88863808
--  发布时间:2014/10/26 21:29:00
--  
再请教两位老师,如果A列是:上海市杨浦区军工路,拆分成:B列是上海市,C列是杨浦区,D列是军工路,那代吗怎么写呢?谢谢!
--  作者:有点甜
--  发布时间:2014/10/26 21:33:00
--  

 

[此贴子已经被作者于2014-10-26 21:37:30编辑过]

--  作者:有点甜
--  发布时间:2014/10/26 21:37:00
--  

 改一下

 

If e.DataCol.Name = "A" Then
    If e.NewValue = Nothing Then
        e.DataRow("B") = Nothing
        e.DataRow("C") = Nothing
        e.DataRow("D") = Nothing
    Else
        Dim chars() As Char = {"/", "-"}
        Dim ary() As String = e.NewValue.replace("市","市/").replace("区", "区/").replace("路", "路").split(Chars)
       
        For i As Integer = 0 To ary.Length - 1
            If ary(i).EndsWith("省") OrElse ary(i).Contains("上海") Then
                e.DataRow("B") = ary(i)
            Else If ary(i).EndsWith("市") OrElse ary(i).EndsWith("区") Then
                e.DataRow("C") = ary(i)
            Else If ary(i).EndsWith("县") OrElse ary(i).EndsWith("路") Then
                e.DataRow("D") = ary(i)
            End If
        Next
    End If
End If


--  作者:ZHX88863808
--  发布时间:2014/10/26 21:57:00
--  
老师刚才我试了一下,有点不行,还请再帮忙修改一下,我把这个项目再传上,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:一列拆分多列a.table


--  作者:有点甜
--  发布时间:2014/10/26 23:29:00
--  
If e.DataCol.Name = "A" Then
    If e.NewValue = Nothing Then
        e.DataRow("B") = Nothing
        e.DataRow("C") = Nothing
        e.DataRow("D") = Nothing
    Else
        Dim chars() As Char = {"/", "-"}
        Dim ary() As String = e.NewValue.replace("省","省/").replace("市","市/").replace("区", "区/").replace("路", "路").split(Chars)
       
        For i As Integer = 0 To ary.Length - 1
            If ary(i).EndsWith("省") OrElse ary(i).Contains("上海") Then
                e.DataRow("B") = ary(i)
            Else If ary(i).EndsWith("市") OrElse ary(i).EndsWith("区") Then
                e.DataRow("C") = ary(i)
            Else If ary(i).EndsWith("县") OrElse ary(i).EndsWith("路") Then
                e.DataRow("D") = ary(i)
            End If
        Next
    End If
End If

--  作者:ZHX88863808
--  发布时间:2014/10/27 6:45:00
--  
谢谢老师!但是我有点搞不懂,上面y2287958老师的代码刚开始试了还好,可是过了一会怎么试就是不行,不知为什么?