Foxtable(狐表)用户栏目专家坐堂 → [求助]转换遇到问题


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

主题:[求助]转换遇到问题

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


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
[求助]转换遇到问题  发帖心情 Post By:2009/12/13 19:52:00 [只看该作者]

在将"课程表"转换为"课时名单"时,不希望将"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("处理完毕!")
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/12/13 21:07:00 [只看该作者]



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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/13 21:19:00 [只看该作者]

也可以:

Dim Values() As String
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()
                Values = dckc.name.split("_")
                drmd("星期") = Values(0)
                drmd("姓名") = drkc(dckc)
                drmd("计分") = 1
            end if
        end if
    next
next
Messagebox.Show("处理完毕!")

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


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/12/13 21:42:00 [只看该作者]

以下是引用czy在2009-12-13 21:19:00的发言:
也可以:

Dim Values() As String
dim h as integer =0
................

    "星期"列处理:我压根儿没想到用split函数来处理,一直试图用SubString函数解决问题. 

[此贴子已经被作者于2009-12-13 22:17:07编辑过]

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


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/12/13 21:54:00 [只看该作者]

以下是引用mr725在2009-12-13 21:07:00的发言:
DataTables("课时名单").DataRows.Clear()
.........
Messagebox.Show("处理完毕!")

谢谢mr725.

[此贴子已经被作者于2009-12-13 22:17:41编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/12/13 21:57:00 [只看该作者]

上面代码速度都太慢了!~  要二、三十秒钟啊(我电脑老了) ~      且变量 h 好像没用哦~  
应该可以提高n倍的速度就好了~ 


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


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/12/13 22:06:00 [只看该作者]

用if语句控制列是一种方法;不知用for each语句能否控制列?
比如:
1.从遍历从第2列开始的所有列?
2.遍历第2至15列?
3.遍历除第7列的所有列.
若能直接用for each语句控制列就更方便了.


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/13 22:19:00 [只看该作者]

以下是引用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
.....


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


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/12/13 22:29:00 [只看该作者]

C老师高招,for...each与if语句结合代码很轻易解决7楼问题.谢谢!


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


加好友 发短信
等级:小狐 帖子:324 积分:3807 威望:0 精华:0 注册:2008/9/1 7:34:00
  发帖心情 Post By:2009/12/13 22:35:00 [只看该作者]

以下是引用mr725在2009-12-13 21:57:00的发言:

上面代码速度都太慢了!~  要二、三十秒钟啊(我电脑老了) ~      且变量 h 好像没用哦~  
应该可以提高n倍的速度就好了~ 

的确较慢,转换生成5940条记录需19秒,提高速度只有看贺老师了.


 回到顶部
总数 17 1 2 下一页