Foxtable(狐表)用户栏目专家坐堂 → [求助]关于行列转换效率的问题


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

主题:[求助]关于行列转换效率的问题

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


加好友 发短信
等级:幼狐 帖子:72 积分:689 威望:0 精华:0 注册:2013/5/10 13:23:00
[求助]关于行列转换效率的问题  发帖心情 Post By:2014/3/11 16:47:00 [只看该作者]

各位大虾,我有一段这样的代码把12个月的表数据行列转换到另一个表的两个月份和数据字段中

For Each dr1 As DataRow In DataTables("GL_Budget_Definition").DataRows
    For m As Integer = 1 To 12
        Dim dr As DataRow = DataTables("HZH_GL_ALL_BUDGET").AddNew
        Select Case m
            Case 1
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Jan"                ’其它都一样就这两句不同的
                dr("AMONTS") = dr1("Jan")

            Case 2
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Feb"
                dr("AMONTS") = dr1("Feb")

            Case 3
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Mar"
                dr("AMONTS") = dr1("Mar")
            Case 4
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Apr"
                dr("AMONTS") = dr1("Apr")
            Case 5
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "May"
                dr("AMONTS") = dr1("May")
            Case 6
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Jun"
                dr("AMONTS") = dr1("Jun")
            Case 7
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Jul"
                dr("AMONTS") = dr1("Jul")
            Case 8
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Aug"
                dr("AMONTS") = dr1("Aug")
            Case 9
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Sep"
                dr("AMONTS") = dr1("Sep")
            Case 10
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Oct"
                dr("AMONTS") = dr1("Oct")
            Case 11
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Nov"
                dr("AMONTS") = dr1("Nov")
            Case 12
                dr("BUDGET_NO") = dr1("Budget_no")
                dr("DESCRIPTION") = dr1("Description")
                dr("DEPT") = dr1("Dept")
                dr("YEAR") = dr1("Year")
                dr("VERSION") = dr1("Version")
                dr("MONTH") = "Dec"
                dr("AMONTS") = dr1("Dec")
        End Select

        DataTables("HZH_GL_ALL_BUDGET").Load '因为我是oracle数据库,用触发器做的主键ID,没插入一行才能触发一次ID,不然会报错,所以要加这一句同步的代码才行,感觉插入了900行要4秒钟,请问是否有高级的方法,可以价快速的?

    Next
Next



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


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/11 16:49:00 [只看该作者]

呵呵,这个东西怎么弄效率都不会高.

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/3/11 16:54:00 [只看该作者]

你这个可以考虑用insert 语句
INSERT INTO table2(id, name, address) SELECT id, name, address FROM table1

DataTables("HZH_GL_ALL_BUDGET").Load

在循环体外 DataTables("HZH_GL_ALL_BUDGET").save不行吗?

还有代码太重复了,用数组简化下吧

 回到顶部