Foxtable(狐表)用户栏目专家坐堂 → 帮助文件里面的代码想换种方法写写看,就是出错,高手帮我看看吧


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

主题:帮助文件里面的代码想换种方法写写看,就是出错,高手帮我看看吧

美女呀,离线,留言给我吧!
jljacky
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:72 积分:625 威望:0 精华:0 注册:2013/2/15 16:30:00
帮助文件里面的代码想换种方法写写看,就是出错,高手帮我看看吧  发帖心情 Post By:2013/3/20 11:19:00 [只看该作者]

原文在 Foxtable编程   3.4.1.2.2.2.7 Select 原文如下,

 

例如在一个成绩表中,包括班级、姓名、总分、总分排名几列数据,希望按班级自动生成总分排名:

'获得所有班级名称,保存在集合中
Dim
bjs As List(Of String) = DataTables("成绩表").GetUniqueValues("","班级")
For Each
bj As String In bjs
   
'获得该班级的全部行,按总分降序排序
    Dim
drs As List(Of DataRow) = DataTables("成绩表").Select("[班级] = " & bj, "总分 DESC")
   
For n As integer = 0 To drs.Count - 1 '遍历所有行
       
If n > 0 AndAlso drs(n)("总分") = drs(n-1)("总分") Then '如果总分和上一行相同
            drs(n)(
"总分排名") = drs(n-1)("总分排名") '则排名等于上一行
       
Else
            drs(n)(
"总分排名") = n + 1 '设置排名
       
End If
   
Next
Next

 

以下是我写的,

 

Dim bjs As List(Of String)

bjs=DataTables("成绩表").GetUniqueValues("","班级")

For Each bj As String In bjs

    Dim n As Integer

    For Each dr As DataRow In DataTables("成绩表").Select("[班级] = " & bj, "总分 DESC")

            If n > 0 AndAlso dr(n)("总分") = dr(n-1)("总分") Then

                dr(n)("总分排名") = dr(n-1)("总分排名")

            Else

                dr(n)("总分排名") = n + 1

            End If

    Next

Next

执行后弹出对话框

 

 


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


加好友 发短信
等级:等待验证 帖子:3856 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/20 11:23:00 [只看该作者]

用户已被锁定

 回到顶部
美女呀,离线,留言给我吧!
jljacky
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:72 积分:625 威望:0 精华:0 注册:2013/2/15 16:30:00
  发帖心情 Post By:2013/3/20 11:49:00 [只看该作者]

我就是用帮助里的代码改的,主要是觉得 For...Next 可以用 For Each 代替,所以想自己试一下。
图片点击可在新窗口打开查看此主题相关图片如下:snag-001.bmp
图片点击可在新窗口打开查看
图片在附件

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


加好友 发短信
等级:小狐 帖子:366 积分:2687 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2013/3/20 11:54:00 [只看该作者]

For n As integer = 0 To drs.Count - 1 '遍历所有行

 

Next

 

楼上没写这两行,回答完毕


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12981 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/3/20 12:00:00 [只看该作者]

Dim n As Integer

Dim bjs As List(Of String)

bjs=DataTables("成绩表").GetUniqueValues("","班级")

For Each bj As String In bjs    

      Dim drs As New List(Of DataRow) = DataTables("成绩表").Select("[班级] = " & bj"总分 DESC")

      n = 0

    For Each dr As DataRow In drs

           If n > 0 AndAlso drs(n)("总分") = drs(n-1)("总分"Then

                dr("总分排名") =  drs(n-1)("总分排名"'则排名等于上一行

            Else

                dr("总分排名") = n + 1

            End If

            n+ = 1

    Next

Next


 回到顶部
美女呀,离线,留言给我吧!
jljacky
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:72 积分:625 威望:0 精华:0 注册:2013/2/15 16:30:00
  发帖心情 Post By:2013/3/20 12:18:00 [只看该作者]

谢谢楼上的,我试过了 ,可以的。 n+ = 1大概是输入错误,应该是n=n+1


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


加好友 发短信
等级:七尾狐 帖子:1700 积分:10735 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/3/20 13:00:00 [只看该作者]

以下是引用jljacky在2013-3-20 12:18:00的发言:

谢谢楼上的,我试过了 ,可以的。 n+ = 1大概是输入错误,应该是n=n+1

哈哈,你老土了吧, 两种写法一样的哦!  不要随意判断一个“错误”。


 回到顶部
美女呀,离线,留言给我吧!
jljacky
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:72 积分:625 威望:0 精华:0 注册:2013/2/15 16:30:00
  发帖心情 Post By:2013/3/20 13:18:00 [只看该作者]

以下是引用e-png在2013-3-20 13:00:00的发言:

哈哈,你老土了吧, 两种写法一样的哦!  不要随意判断一个“错误”。

嗯,偶刚刚开始学了2个月,实在是太菜鸟了。。。


 回到顶部