以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于行列转换效率的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47500) |
-- 作者:cat88hzh -- 发布时间: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 -- 发布时间:2014/3/11 16:49:00 -- 呵呵,这个东西怎么弄效率都不会高. |
-- 作者:jspta -- 发布时间: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不行吗? 还有代码太重复了,用数组简化下吧
|