Foxtable(狐表)用户栏目专家坐堂 → 整数列排序问题


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

主题:整数列排序问题

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


加好友 发短信
等级:八尾狐 帖子:1897 积分:16823 威望:0 精华:0 注册:2014/7/29 19:09:00
整数列排序问题  发帖心情 Post By:2021/6/18 16:22:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:排序.jpg
图片点击可在新窗口打开查看
统计表中第一列机台为整数列,现在的问题是排序是按1,10...19,才到2,20,21...
除了改成字符型将1变成001,002这样的方式外有没有办法直接按1,2,3,....9,10,11这样的顺序排,
谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105491 积分:536446 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/18 16:27:00 [只看该作者]

肯定不是整数列

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


加好友 发短信
等级:八尾狐 帖子:1897 积分:16823 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2021/6/18 17:19:00 [只看该作者]

意思是整数列不会那样吗?用了 CAST(b.F2710 AS INT) AS 机台  还是一样

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105491 积分:536446 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/18 17:24:00 [只看该作者]

整数列肯定是按数值大小排序的。

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


加好友 发短信
等级:八尾狐 帖子:1897 积分:16823 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2021/6/19 9:43:00 [只看该作者]

sql后台表的数据类型是numeric应该没问题吧?
后台数据提取后用了交叉统计
'---交叉汇总数据
Dim tbl As Table = Tables(e.Form.name & "_主表")
Dim b As New CrossTableBuilder("统计表1",dt)
b.ConnectionName = Mydata
b.HGroups.AddDef("机台") '添加客户列用于水平分组
b.HGroups.AddDef("产品编码") '添加客户列用于水平分组
b.HGroups.AddDef("品名") '添加客户列用于水平分组
b.HGroups.AddDef("规格") '添加客户列用于水平分组
b.HGroups.AddDef("标准产能") '添加客户列用于水平分组
b.HGroups.AddDef("生产车间") '添加客户列用于水平分组

b.VGroups.AddDef("生产日期",DateGroupEnum.Year,"{0}年") '添加产品列用于垂直分组,并设置了Pattern参数
b.VGroups.AddDef("生产日期",DateGroupEnum.Month,"{0}月") '添加产品列用于垂直分组,并设置了Pattern参数
b.VGroups.AddDef("生产日期",DateGroupEnum.Day,"{0}日") '添加产品列用于垂直分组,并设置了Pattern参数
b.Totals.AddDef("生产数量") '添加数量列用于统计
b.HorizontalTotal = True '水平方向自动汇总
b.VerticalTotal = True '垂直方向自动汇总
'  b.Build '生成统计表
e.Form.StopRedraw
tbl.StopRedraw
tbl.DataSource = b.BuildDataSource
tbl.AutoSizeCols  '自动列宽
tbl.Cols("产品编码").Width = 100  '指定某列宽
tbl.Cols("品名").Width = 100  '指定某列宽
tbl.Cols("规格").Width = 100  '指定某列宽
tbl.Sort = "机台"
tbl.ResumeRedraw
e.Form.ResumeRedraw

但结果就是没按顺序排


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105491 积分:536446 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/19 10:40:00 [只看该作者]

使用命令窗口测试b.Build,然后打开表结构看看就知道了AddExp

试试使用SQLCrossTableBuilder


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


加好友 发短信
等级:八尾狐 帖子:1897 积分:16823 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2021/6/19 15:41:00 [只看该作者]

在命令窗口执行,结果还是一样,打开表结构查看,结果所有的分组列都变成备注型了,不管原来是什么类型的数据

因为统计的来源表是一个储存过程生成的查询表,如果用sqlCrossTableBuilder,下面红色表名那里怎么写都提示错误
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
cmd.CommandTimeOut = 300
cmd.CommandText = "Exec " & dr("Key") & " '" & bu & "','" & ds & "','" & de & "'"
Dim dt As DataTable = cmd.ExecuteReader()

Dim b As New SqlCrossTableBuilder("统计表1",dt)
....
是不是这种查询得到的临时表无法用sqlCrossTableBuilder?
还有其他办法吗?


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105491 积分:536446 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/19 15:59:00 [只看该作者]

临时表不能使用SqlCrossTableBuilder

添加一个临时列,比如

tbl.DataSource = b.BuildDataSource
tbl.Datatable.Add("机台2", GetType(integer), "Convert([机台], 'System.Int32')")
tbl.cols("机台2").visible = false
tbl.Sort = "机台2"

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


加好友 发短信
等级:八尾狐 帖子:1897 积分:16823 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2021/6/19 16:48:00 [只看该作者]

Convert([机台], 'System.Int32')") 这句怎么写都不对
无法设置列"机台2"的表达式,原因:输入字符串的格式不正确?


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105491 积分:536446 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/19 16:50:00 [只看该作者]

去掉自动汇总代码:b.VerticalTotal = True,添加临时列后再使用合计模式

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