在将"课程表"转换为"课时名单"时,不希望将"1班","2班",....."99班"转换到"姓名"列中,"星期"列不只显示星期几不想显示第几节(如:希望星期列中出现"星期一","星期二",.....,不希望出现"星期一_1","星期二_2",........,请问下列代码如何修改?谢谢
dim h as integer =0
DataTables("课时名单").DataRows.Clear()
For Each drkc As DataRow In DataTables("课程表").DataRows
for Each dckc as Datacol in DataTables("课程表").Datacols
if drkc(dckc) isnot nothing then
if drkc(dckc) <> "" then
Dim drmd As DataRow
h=h+1
drmd = DataTables("课时名单").DataRows.AddNew()
drmd("星期") = dckc.name
drmd("姓名") = drkc(dckc)
drmd("计分") = 1
end if
end if
next
next
Messagebox.Show("处理完毕!")
DataTables("课时名单").DataRows.Clear()
For Each drkc As DataRow In DataTables("课程表").DataRows
for i as integer = 1 to Tables("课程表").cols.count -1
if drkc(Tables("课程表").cols(i).name) isnot nothing and drkc(Tables("课程表").cols(i).name) <> "班级" then
if drkc(Tables("课程表").cols(i).name) <> "" then
Dim drmd As DataRow
drmd = DataTables("课时名单").DataRows.AddNew()
drmd("星期") = Tables("课程表").cols(i).name.split("_")(0)
drmd("姓名") = drkc(Tables("课程表").cols(i).name)
drmd("计分") = 1
end if
end if
next
next
Messagebox.Show("处理完毕!")
[此贴子已经被作者于2009-12-13 21:12:24编辑过]
以下是引用czy在2009-12-13 21:19:00的发言:
也可以:
Dim Values() As String
dim h as integer =0
................
"星期"列处理:我压根儿没想到用split函数来处理,一直试图用SubString函数解决问题.
[此贴子已经被作者于2009-12-13 22:17:07编辑过]
以下是引用mr725在2009-12-13 21:07:00的发言:
DataTables("课时名单").DataRows.Clear()
.........
Messagebox.Show("处理完毕!")
谢谢mr725.
[此贴子已经被作者于2009-12-13 22:17:41编辑过]
上面代码速度都太慢了!~ 要二、三十秒钟啊(我电脑老了) ~ 且变量 h 好像没用哦~
应该可以提高n倍的速度就好了~
用if语句控制列是一种方法;不知用for each语句能否控制列?
比如:
1.从遍历从第2列开始的所有列?
2.遍历第2至15列?
3.遍历除第7列的所有列.
若能直接用for each语句控制列就更方便了.
以下是引用abcdzabcdz在2009-12-13 22:06:00的发言:
用if语句控制列是一种方法;不知用for each语句能否控制列?
比如:
1.从遍历从第2列开始的所有列?
2.遍历第2至15列?
3.遍历除第7列的所有列.
若能直接用for each语句控制列就更方便了.
if dckc.name <> "星期一_1" Then
if drkc(dckc) isnot nothing then
.....
C老师高招,for...each与if语句结合代码很轻易解决7楼问题.谢谢!
以下是引用mr725在2009-12-13 21:57:00的发言:
上面代码速度都太慢了!~ 要二、三十秒钟啊(我电脑老了) ~ 且变量 h 好像没用哦~
应该可以提高n倍的速度就好了~
的确较慢,转换生成5940条记录需19秒,提高速度只有看贺老师了.