以下是引用hsw521在2013-3-20 18:42:56的发言:
意思就是:A表有不同的单位,每个单位又有最高个人编号,B表有不同的单位(可能与A表单位相同或不同中,有单位编号作为区别),如果B中单位编号与A表单位编号相等,那么B表中新增人员的个人编号就根据A表中相同单位的最高个人编号之后接着编号。如果B表中单位编号不在A表中,B表中的个人编号从1编号。
CLOSE DATABASES
USE A表 IN 0
USE B表 IN 0
SELECT 单位编号,MAX(VAL(RIGHT(ALLTRIM(个人编号),5))) 最大编号 FROM A表 INTO CURSOR A表最大号_TMP GROUP BY 单位编号
SELECT DISTINCT 单位编号 FROM b表 INTO CURSOR b表单位_TMP
SELECT b表单位_TMP
SCAN
SELECT A表最大号_TMP
LOCATE FOR ALLTRIM(单位编号)==ALLTRIM(b表单位_TMP.单位编号)
IF FOUND()
最大编号_tmp=A表最大号_TMP.最大编号
ELSE
最大编号_tmp=0
ENDIF
SET FILTER TO ALLTRIM(单位编号)==ALLTRIM(b表单位_TMP.单位编号) IN B表
GO TOP IN B表
SELECT B表
SCAN
最大编号_tmp=最大编号_tmp+1
REPLACE 个人编号 WITH ALLTRIM(行政区划)+ALLTRIM(单位编号)+PADL(最大编号_tmp,5,'0') IN B表
ENDSCAN
SET FILTER TO IN B表
SELECT b表单位_TMP
ENDSCAN
CLOSE DATABASES
注意,未经调试。我不知你的真实数据表结构,自己改下吧