高手请进,部分排序,怎么实现啊?

guiyings 2003-10-23 11:12:30
我的数据窗口中有两个字段(如:oprname、data)的内容如下:
oprname data
电压10.5,电流密度1.5 2槽2号
电压10.4,电流密度1.8 2槽1号
起挂 2#槽1#硅机
启动 2#槽1#、2#硅机
电压33.2,电流密度5.0 2槽1号
电压30.5,电流密度4.1 2槽2号
电压35.3,电流密度5.0 2槽2号
电压36.1,电流密度3.8 2槽1号
起挂 2#槽2#硅机
启动 2#槽1#、2#硅机
电压33.5,电流密度8.0 2槽2号
电压30.8,电流密度4.5 2槽1号
起挂 2#槽1#硅机
我现在要它显示时,从“启动”到“起挂”间的"data"字段内容按从“1号”到“2号”的顺序排列,即效果如下:
oprname data
电压10.5,电流密度1.5 2槽2号
电压10.4,电流密度1.8 2槽1号
起挂 2#槽1#硅机
启动 2#槽1#、2#硅机
电压33.2,电流密度5.0 2槽1号
电压30.5,电流密度4.1 2槽2号
电压36.1,电流密度3.8 2槽1号
电压35.3,电流密度5.0 2槽2号
起挂 2#槽2#硅机
启动 2#槽1#、2#硅机
电压30.8,电流密度4.5 2槽1号
电压33.5,电流密度8.0 2槽2号
起挂 2#槽1#硅机
这要怎么才能实现啊,语法怎么写?

...全文
31 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
klbt 2003-10-23
  • 打赏
  • 举报
回复
表的设计可能有疑问。
电压、电流密度可以考虑拆开,槽、硅机也同样。
xuyi1979 2003-10-23
  • 打赏
  • 举报
回复
实现起来比较烦琐,需在DW中加个自定义字段a,然后对每条记录进行判断对a进行赋值,然后再对a进行排序。
但是在此之前有个逻辑问题想请教:
例如这条记录:
电压33.5,电流密度8.0 2槽2号
你是怎么知道它位于哪对启动--起挂中???
如果搞清楚这点,应该就好办多了!
编程夜猫 2003-10-23
  • 打赏
  • 举报
回复
你说清楚点,oprname 名的顺序有什么有要求。
lmby 2003-10-23
  • 打赏
  • 举报
回复
用字符是不太好,因为如果到了10以上,1 2 11排序会有问题.
如果你表里有数字列,则

你可以select oprname, data, num_column as p1 from table

没有数字列,可关联一张表.

你说的那情况,可能是有分组吧,那么dw_name.groupcalc()
jdsnhan 2003-10-23
  • 打赏
  • 举报
回复
排序分组两个到一起的时候总是让人头疼!
改动一点鹿门布衣的语句:
dw_name.setsort( p1, data )
dw_name.sort()
dw_name.groupcalc()
试试看,要重新计算一下分组的分隔符!
guiyings 2003-10-23
  • 打赏
  • 举报
回复
lmby(鹿门布衣)说的那方法,定义的p1是字符型的,dw_name.object.p1[i] = j 这句运行时显示字符串不匹配,我要是改为:dw_name.object.p1[i] = string(j),运行时结果还是不对啊,就第一个“起挂”前面的几条记录排序了,后面的“启动”与“起挂”间的记录一个也没有排序,怎么做啊
lmby 2003-10-23
  • 打赏
  • 举报
回复
在你的数据窗口中更改sql数据源为:
select oprname, data, '' as p1 from table.
guiyings 2003-10-23
  • 打赏
  • 举报
回复
我的意思就是说,字段(oprname)的字段内容显示时是有规律的,显示总是从“启动”到“起挂”,每隔几条记录后,再从“启动”到“起挂”。当oprname字段内容显示为从“启动”到“起挂”时,字段(data)的字段内容相应的显示为几槽几号,几槽几号中的几是无序的,我现在要让它总是显示为“几槽1号”到“几槽2号”,即先显示1号的,再显示2号的,就这么简单。如果内容里面是先显示“2槽2号”再显示“2槽1号”,则要求让这两条记录换个位置。明白了吗?“2槽2号没办法知道它位于哪对启动--起挂中”。自定义字段怎么定义呀,具体怎么做? lmby(鹿门布衣)说的那方法,计算列p1表达式怎么定义啊,能说得具体点吗?
guiyings 2003-10-23
  • 打赏
  • 举报
回复
我的意思就是说,字段(oprname)的字段内容显示时是有规律的,显示总是从“启动”到“起挂”,每隔几条记录后,再从“启动”到“起挂”。当oprname字段内容显示为从“启动”到“起挂”时,字段(data)的字段内容相应的显示为几槽几号,几槽几号中的几是无序的,我现在要让它总是显示为“几槽1号”到“几槽2号”,即先显示1号的,再显示2号的,就这么简单。如果内容里面是先显示“2槽2号”再显示“2槽1号”,则要求让这两条记录换个位置。明白了吗?“2槽2号没办法知道它位于哪对启动--起挂中”。自定义字段怎么定义呀,具体怎么做? lmby(鹿门布衣)说的那方法,计算列p1表达式怎么定义啊,能说得具体点吗?
lmby 2003-10-23
  • 打赏
  • 举报
回复
sigh.......
这只是数据窗口中的字段而已,表里一定还有operate time等属性的。所以他列出来的数据应该是按操作时间排列的。就算不是按操作时间排列,也是有一定的规则。人家的问题只是在这样的 数据基础上做排队而已。。。。。

我想,这未必是新系统。眉准是老系统的维护,动辄让人家改数据库设计。。。。。

guiyings (小兰) :就这么做就ok。
愉快的登山者 2003-10-23
  • 打赏
  • 举报
回复
建立一个排序表,然后给oprname,data的排序顺序进行编号。
将两个表用oprname,data进行关联,按排序编号的顺序进行显示。
编程夜猫 2003-10-23
  • 打赏
  • 举报
回复
我也同意 klbt(快乐白兔) 的建议,再好好考虑一下表的设计,表可以把各种数据分开存,然后在DW中用计算列连起来 达到你所看到的结果。
lmby 2003-10-23
  • 打赏
  • 举报
回复
sorry
该计算列最好用数字。

增加计算列p1。

long i, j

j = 0

for i = 1 to dw_name.rowcount()
if dw_name.object.oprname[i] = ‘起挂’ or dw_name.object.oprname[i] = ‘启动’ then j++
dw_name.object.p1[i] = j
next

dw_name.setsort( p1, data )
dw_name.sort()

lmby 2003-10-23
  • 打赏
  • 举报
回复
增加计算列p1。

long i, j

j = 0

for i = 1 to dw_name.rowcount()
if dw_name.object.oprname[i] = ‘起挂’ or dw_name.object.oprname[i] = ‘启动’ then j++
dw_name.object.p1[i] = string( j )
next

dw_name.setsort( p1, data )
dw_name.sort()

jdsnhan 2003-10-23
  • 打赏
  • 举报
回复
同意SummerHeart(夏夜之怀)的疑问,oprname的顺序怎么控制。

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧