请大家多多帮忙

jie810516 2003-06-26 07:31:25
有这样一个问题,我不知该怎么解决,请大家帮忙想想:
如:机号 日期 班次 型号 这四个字段,内容为:
01 2003-06-25 早 AB0001
01 2003-06-25 早 ID0014
01 2003-06-25 中 AC0053
01 2003-06-25 中 ZD0015
01 2003-06-25 中 ID0014
01 2003-06-25 晚 BD0016
如何实现下列这种排序
01 2003-06-25 早 AB0001
01 2003-06-25 早 ID0014
01 2003-06-25 中 ID0014
01 2003-06-25 中 AC0053
01 2003-06-25 中 ZD0015
01 2003-06-25 晚 BD0016
就是在机号,日期相同时,而班次改变时,如何将上一班次中已经出现的型号,在这一班次提到最前,而不是按一般的A-Z或Z-A的次序。
(上一例子就是如何将第五条记录移前两位,其他按序。)当然实际中有好几千条这样的数据,手改实在麻烦,能否用程序来解决。


...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mudong 2003-06-27
  • 打赏
  • 举报
回复
也是fj_jiangqi的思路、换一种方法。假如表名table1
alter table table1 add groupid i
repl all gourpid with recno()
select distinct 型号 from table1 order by 机号,日期,groupid;
into table temp
alter table temp add groupid i
sele temp
repl all gourpid with recno()
select a.*,b.groupid from ;
table1 a,temp b;
where a.型号=b.型号;
order by 机号,日期,groupid;
into table new
表new应该是需要的顺序。


fj_jiangqi 2003-06-26
  • 打赏
  • 举报
回复
index on 机号+dtos(日期)+班次 to tag tmp
set order to tag tmp
_a1=''
_a2={}
_a3=''
dime arr[10000]
cc=0
cn0=0
scan all
if _a1#机号 .or. _a2#日期 .or. _a3#班次
_a1=机号
_a2=日期
_a3=班次
_cn1=recno()
if cc>1
go _cn0
for i=1 to cc
replace 型号 with arr[cc-i+1]
skip
endfor
endif
go _cn1
cc=0
endif
if cc=0
_cn0=recno()
endif
cc=cc+1
arr[cc]=型号
endscan
这样可不可满足你的要求?没调试,也许错了,也许误解你的意思。
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
anis0444 2003-06-26
  • 打赏
  • 举报
回复
你的说明还不够详细。
“如何将上一班次中已经出现的型号,在这一班次提到最前,”
早班中“ID0014”出现,中班出现了;中班中的3个,夜班怎么没出现?
没有规律怎么编?
SongDaXia 2003-06-26
  • 打赏
  • 举报
回复
我想问你一下:
假设在换班次后,上一班次中有好几个型号要在本班次中出现,又怎么能都提到最前呢?

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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