Foxtable(狐表)用户栏目专家坐堂 → [求助]表数据复制到另一张表中,格式分割问题


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

主题:[求助]表数据复制到另一张表中,格式分割问题

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


加好友 发短信
等级:二尾狐 帖子:517 积分:4325 威望:0 精华:0 注册:2014/11/26 15:23:00
[求助]表数据复制到另一张表中,格式分割问题  发帖心情 Post By:2018/4/19 13:16:00 [只看该作者]

老师好!

    我有2张表:
第一张有一个 时间 列 ,值: 08:29 12:10 12:12 17:30,中间用空格分隔
第二张有4个对应列,
图片点击可在新窗口打开查看此主题相关图片如下:1111.png
图片点击可在新窗口打开查看

我用如下代码,将第一张表数据复制到第二张表没问题,但是遇到需要自己处理的,如何写代码?请指教!谢谢!

Dim Cols1() As String = {"姓名","部门","日期"}
Dim Cols2() As String = {"姓名","部门","考勤日期"}
For Each dr1 As DataRow In DataTables("原始记录2").Select("")
    Dim dr2 As DataRow = DataTables("考勤报表").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next

另外问一句,为什么有些人复制粘贴上来的代码有颜色?

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


加好友 发短信
等级:二尾狐 帖子:517 积分:4325 威望:0 精华:0 注册:2014/11/26 15:23:00
  发帖心情 Post By:2018/4/19 13:52:00 [只看该作者]

我改成这样,但是提示“索引数组超出了界限”,我的值范围哪里有问题?

Dim Cols1() As String = {"姓名","部门","日期","时间"}
Dim Cols2() As String = {"姓名","部门","考勤日期","上午签到","上午签退","下午签到","下午签退"}
For Each dr1 As DataRow In DataTables("原始记录2").Select("")
    Dim dr2 As DataRow = DataTables("考勤报表").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        If i = 3 Then
            Dim Values() As String
            Values = dr1(Cols1(3)).split(" ")
            dr2(Cols2(3)) = Values(0)
            dr2(Cols2(4)) = Values(1)
            dr2(Cols2(5)) = Values(2)
            dr2(Cols2(6)) = Values(3)
        Else
            dr2(Cols2(i)) = dr1(Cols1(i))
        End If
    Next
Next

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


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

试试

 

Dim Cols1() As String = {"姓名","部门","日期","时间"}
Dim Cols2() As String = {"姓名","部门","考勤日期","上午签到","上午签退","下午签到","下午签退"}
For Each dr1 As DataRow In DataTables("原始记录2").Select("")
    Dim dr2 As DataRow = DataTables("考勤报表").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        If i = 3 Then
            Dim Values() As String
            Values = dr1(Cols1(3)).split(" ")
            If values.length > 0 Then dr2(Cols2(3)) = Values(0)
            If values.length > 1 Then dr2(Cols2(4)) = Values(1)
            If values.length > 2 Then dr2(Cols2(5)) = Values(2)
            If values.length > 3 Then dr2(Cols2(6)) = Values(3)
        Else
            dr2(Cols2(i)) = dr1(Cols1(i))
        End If
    Next
Next

[此贴子已经被作者于2018/4/19 15:48:19编辑过]

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


加好友 发短信
等级:二尾狐 帖子:517 积分:4325 威望:0 精华:0 注册:2014/11/26 15:23:00
  发帖心情 Post By:2018/4/19 15:44:00 [只看该作者]

原来是我的值的问题,有的4个,有的2个,有的没有。我改成这样子:

Dim Cols1() As String = {"姓名","部门","日期","时间"}
Dim Cols2() As String = {"姓名","部门","考勤日期","上午签到","上午签退","下午签到","下午签退"}
For Each dr1 As DataRow In DataTables("原始记录2").Select("")
    Dim dr2 As DataRow = DataTables("考勤报表").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        If i = 3 Then
            If dr1(Cols1(3)) <> "" Then 
            Dim Values() As String
            Values = dr1(Cols1(3)).split(" ")
            Select Case Values.Length
                Case 1
                    dr2(Cols2(3)) = Values(0)
                Case 2
                    dr2(Cols2(3)) = Values(0)
                    dr2(Cols2(4)) = Values(1)
                Case 3
                    dr2(Cols2(3)) = Values(0)
                    dr2(Cols2(4)) = Values(1)
                    dr2(Cols2(5)) = Values(2)
                Case 4
                    dr2(Cols2(3)) = Values(0)
                    dr2(Cols2(4)) = Values(1)
                    dr2(Cols2(5)) = Values(2)
                    dr2(Cols2(6)) = Values(3)
            End Select
                        
            End If 
        Else
            dr2(Cols2(i)) = dr1(Cols1(i))
        End If
    Next
Next



 回到顶部