标题:找出编号字段中的最大顺序号
只看楼主
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
结帖率:66.67%
已结贴  问题点数:20 回复次数:17 
找出编号字段中的最大顺序号
1.记录中有一个字段“编号”,编号是乱序存放的,主关键字,无重复值。
2.编号的规则=年份+种类号+顺序号(编号等于他们连接起来,编号是字符型)
3.说明:年份是2001 2002 2003    ...    (年份)
        种类号12  23  34  13    ...  (每一个种类号对应一种商品名)
        顺序号001  002  003 004 ... (根据年份和种类号相同的,按顺序号从小到大)
4.例如
编号
200112001
200112002
200112003
200112004
200112005
......
200123001
......
200134001
......
200113001
......
......
200213001
5.问题:怎么根据年份、种类号相同的,即根据前六位相同的,找出顺序号最大的值,赋给X
  (例如上面4中的200112相同时,最大编号是005,X="005")

[此贴子已经被作者于2017-8-15 15:36编辑过]

搜索更多相关主题的帖子: 编号 字段 最大 序号 年份 
2017-08-15 15:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
CREATE CURSOR tt (编号 C(10))
INSERT INTO tt VALUES ("200112001")
INSERT INTO tt VALUES ("200112002")
INSERT INTO tt VALUES ("200112003")
INSERT INTO tt VALUES ("200212004")
INSERT INTO tt VALUES ("200212005")
INSERT INTO tt VALUES ("200212006")
INSERT INTO tt VALUES ("200312007")
INSERT INTO tt VALUES ("200312008")
INSERT INTO tt VALUES ("200312009")
c年份 = "2002"
c种类号 = "12"
CALCULATE MAX(SUBSTR(编号,7,3)) FOR LEFT(编号,6)==(c年份+c种类号) TO x
?x
2017-08-15 16:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
问题不明

坚守VFP最后的阵地
2017-08-15 18:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
create cursor tt (bh c(9))
insert into tt values ("200112001")
insert into tt values ("200112002")
insert into tt values ("200112003")
insert into tt values ("200113001")
insert into tt values ("200113002")
insert into tt values ("200114001")
insert into tt values ("200114002")
insert into tt values ("200114003")
insert into tt values ("200114004")
insert into tt values ("200115001")
insert into tt values ("200115002")
insert into tt values ("200115003")
select left(bh,6),padl(count(*),3,"0") 最大值 from tt group by 1

是不是这个结果

坚守VFP最后的阵地
2017-08-15 19:00
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 2楼 吹水佬
一用CALCULATE这个命令,结果就显示在表单上了
怎么能不让CALCULATE命令的结果输出到表单上
2017-08-15 20:29
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 4楼 sdta
CALCULATE MAX(SUBSTR(编号,7,3)) FOR LEFT(编号,6)==(c年份+c种类号) TO x
就是上面的这个就对

可以把上面的命令改成SQL语言吗,C年份和C种类号是两个需要自己输入的变量,根据这两个变量在表中编号字段查找(c年份+c种类号)相同的编号后三位最大值
2017-08-15 20:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用wedsic在2017-8-15 20:29:10的发言:

一用CALCULATE这个命令,结果就显示在表单上了
怎么能不让CALCULATE命令的结果输出到表单上

你照抄的吧?
不用 ?x,想用什么控件将 x 的值显示在表单上?
2017-08-15 21:05
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:0 
你可以考虑在表单上弄一个文本框控件,把这个计算出来的结果赋给这个文件框呀。
2017-08-16 01:02
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用wedsic在2017-8-15 20:33:27的发言:

CALCULATE MAX(SUBSTR(编号,7,3)) FOR LEFT(编号,6)==(c年份+c种类号) TO x
就是上面的这个就对

可以把上面的命令改成SQL语言吗,C年份和C种类号是两个需要自己输入的变量,根据这两个变量在表中编号字段查找(c年份+c种类号)相同的编号后三位最大值

只是计算某字段的值,无需用复杂难读的SQL语句吧。编程最怕的是自己写的代码到头来自己也难看得明白,或者说更新维护代码时耗费太多。除非对运行效率要求极高,否则无需太过执着。
c年份、c种类号 是两个变量,什么时候在哪里由用户输入可以自己去处理。
2017-08-16 05:24
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 9楼 吹水佬
CALCULATE会改变记录指针的位置,如果不改变记录指针的位置,怎么做呢

[此贴子已经被作者于2017-8-16 10:28编辑过]

2017-08-16 10:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480064-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.156438 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved