Foxtable(狐表)用户栏目专家坐堂 → 关于排序我想讨论下


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

主题:关于排序我想讨论下

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/10/16 15:57:00 [只看该作者]

For Each dr1 As Row In Tables("表A").Select("[金额] > 100")   Table可以用select吗? 应该是  Tables("表A").datatable.Select 吧?


  另外这个的写法 不用排序都可以根据来源表的顺序一样?

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/10/16 15:58:00 [只看该作者]

以下是引用狐狸爸爸在2013-10-16 15:51:00的发言:

至于按照规定顺序调整列位置,是很简单的,例如:

 

 

Dim nms As String() = {"第十列","第九列","第七列","第八列","第六列","第五列","第一列","第三列","第四列","第二列"} '定义顺序
Tables("表A").StopRedraw()
For i As Integer = 0 To nms.Length -1
    Tables("表A").Cols(nms(i)).move(i)
Next
Tables("表A").ResumeRedraw()



  不能固定的,有些项目几百项呢 一一写,不现实 还需要添加新的项目进去呢.  有无动态的?


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/16 16:04:00 [只看该作者]

应该是:
 
For Each dr1 As Row In Tables("表A").Rows
    if dr1("金额") > 100 Then

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/16 16:07:00 [只看该作者]

以下是引用blackzhu在2013-10-16 15:58:00的发言:
不能固定的,有些项目几百项呢 一一写,不现实 还需要添加新的项目进去呢. 有无动态的?

 

老朱,我告诉你思路而已,你可以变通啊  nms可以是一个数组,也可以是集合,集合可以用Getvalues等各种方式获取。

 

Dim nms As List(of String) = DataTables("xxx").GetValues("xxxx")
Tables("表A").StopRedraw()
For i As Integer = 0 To nms.Count -1
    Tables("表A").Cols(nms(i)).move(i)
Next
Tables("表A").ResumeRedraw()

 

 

[此贴子已经被作者于2013-10-16 16:09:18编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/16 16:09:00 [只看该作者]

如果获取的是标题:

 

 

Dim nms As List(of String) = DataTables("xxx").GetValues("xxxx")
Dim cnt As Integer
Tables("表A").StopRedraw()
For i As Integer = 0 To nms.Count -1
    For Each c As Col In Tables("表A").Cols
        If c.Caption = nms(i) Then
            Tables("表A").Cols(nms(i)).move(cnt)
            cnt  =cnt +1
        End If
    Next
Next
Tables("表A").ResumeRedraw()


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/10/16 16:16:00 [只看该作者]

老大 不会吧!  这样获取的数值不能做列名的.
交叉统计呀?你这样获取的数值这能作为列标题而已.

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/16 16:17:00 [只看该作者]

通过列标题,不就能获取列了吗?

例如25楼的代码

 


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/10/16 16:27:00 [只看该作者]

我原来是这样写的:

Dim str As String
Dim Arys As List(Of String)
Arys = DataTables("统计表4").GetValues("数据统计项目", "数据统计项目 Is Not Null","数据统计项目")
For Each Ary As String In Arys
    str = str & "," & Ary
Next
Dim i As Integer = 4
Dim nms() As String = str.Split(",")
Tables("统计表1").StopRedraw()
For Each nm As String In  nms
    For Each cl As DataCol In DataTables("统计表1").DataCols
        If cl.Caption = nm Then
            Tables("统计表1").Cols(cl.Name).move(i)
            i = i+1
        End If
    Next
Next
Tables("统计表1").ResumeRedraw()



我用你的代码改的是这样的:

Dim nms As List(of String) = DataTables("统计表4").GetValues("数据统计项目")
Dim cnt As Integer  = 4
Tables("统计表1").StopRedraw()
For Each nm As String In nms
    For Each c As Col In Tables("统计表1").Cols
        If c.Caption = nm Then
            Tables("统计表1").Cols(c.Name).move(cnt)
            cnt  =cnt +1
        End If
    Next
Next
Tables("统计表1").ResumeRedraw()


得到的结果一模一样,但是唯一的不对  就是不是按照来源表排序的   我上个例子上来.

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/10/16 16:33:00 [只看该作者]

窗口3

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计.foxdb


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/16 16:38:00 [只看该作者]

你不用做了,我做个例子给你,你看看这个统计,交叉表的列顺序和原始数据顺序一致:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目52.table


 回到顶部
总数 35 上一页 1 2 3 4 下一页