Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共17 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

1楼
abcdzabcdz 发表于: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

2楼
mr725 发表于: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编辑过]
3楼
czy 发表于: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("处理完毕!")
4楼
abcdzabcdz 发表于: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编辑过]
5楼
abcdzabcdz 发表于: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编辑过]
6楼
mr725 发表于:2009/12/13 21:57:00

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

7楼
abcdzabcdz 发表于:2009/12/13 22:06:00

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

8楼
czy 发表于: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
.....

9楼
abcdzabcdz 发表于:2009/12/13 22:29:00

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

10楼
abcdzabcdz 发表于:2009/12/13 22:35:00
以下是引用mr725在2009-12-13 21:57:00的发言:

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

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

共17 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 3 queries.