标题:找出编号字段中的最大顺序号
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用wedsic在2017-8-16 10:25:49的发言:

CALCULATE会改变记录指针的位置,如果不改变记录指针的位置,怎么做呢

表数据处理记录指针变动是常态,RECNO()、GO命令等都可以处理这类问题。
2017-08-16 10:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
掌握了基础知识,就能灵活应用VFP中的各种命令解决实际工作中的问题。

坚守VFP最后的阵地
2017-08-16 11:43
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用wedsic在2017-8-16 10:25:49的发言:

CALCULATE会改变记录指针的位置,如果不改变记录指针的位置,怎么做呢

使用 CALCULATE 命令前,先保存当前记录号,统计完毕后,回到以前的位置
n记录号 = recn()
CALCULATE....
go n记录号

2017-08-16 11:46
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 13楼 mywisdom88
最好用SQL
表单里要显示表中的数据,该命令在一个表单上是生成编号用的,如果再用指针转来转去,会影响数据插入删除操作。
2017-08-17 03:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用wedsic在2017-8-17 03:19:28的发言:

最好用SQL
表单里要显示表中的数据,该命令在一个表单上是生成编号用的,如果再用指针转来转去,会影响数据插入删除操作。

指针转来转去怎会影响数据插入删除操作?除非是乱来。
2017-08-17 07:54
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:0 
*!*    https://bbs.bccn.net/thread-480064-1-1.html
SET ENGINEBEHAVIOR 70
Close Databases
Create Cursor tt (编号 C(10))
Insert Into tt Values ("200112001")
Insert Into tt Values ("200112002")
Insert Into tt Values ("200112003")
Insert Into tt Values ("200112004")
Insert Into tt Values ("200112005")

Insert Into tt Values ("200123001")
Insert Into tt Values ("200134001")
Insert Into tt Values ("200113001")
Insert Into tt Values ("200213001")

Select 编号, Left(编号, 6) As 编号1, SUBSTR(编号, 7, 3) As X From tt Into Cursor Query
Select 编号, X From Query Group By 编号1 Order By 编号1  && 或者后面可以跟 Where 过滤条件

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-08-17 08:38
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:0 
Set ENGINEBEHAVIOR 70
Close Databases
Create Cursor tt (编号 C(10))
Insert Into tt Values ("200112001")
Insert Into tt Values ("200112002")
Insert Into tt Values ("200112003")
Insert Into tt Values ("200112004")
Insert Into tt Values ("200112005")

Insert Into tt Values ("200123001")
Insert Into tt Values ("200134001")
Insert Into tt Values ("200113001")
Insert Into tt Values ("200213001")

Select TOP 1 编号, Substr(编号, 7, 3) As X From tt ;
    Order By 编号 Desc  Group By 编号 Where Left(编号, 6) = "200112"

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-08-17 10:06
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分: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种类号)相同的编号后三位最大值

SELECT MAX(RIGHT(编号,3)) FROM 表文件名 WHERE LEFT(编号,6)==c年份+c种类号
以上是根据表单中指定的年份和种类号查找出最大的序号。如果是全系列查找,则:
SELECT LEFT(编号,6) 年份种类,MAX(RIGHT(编号,3)) FROM 表文件名 GROUP BY 年份种类 ORDER BY 1
2017-08-17 15:02



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




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

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