象Excel的自动编号问题。(200)

  • 主题发起人 主题发起人 zkktom
  • 开始时间 开始时间
Z

zkktom

Unregistered / Unconfirmed
GUEST, unregistred user!
如题: 比如90B0001 然后自动计算出下一个依次为 90B0002 90B0003 。。。90B0011 比如90B0000001 然后自动计算出下一个依次为 90B0000002 90B0000003 。。。90B0000011 比如80X1 然后自动计算出下一个依次为 80x2 x3 ...80x12....80x101
 
你是想用Delphi程序实现呢?还是用SQL语言实现?数据库是什么?具体要求是什么?
 
delphi实现上述功能,不要管数据库的比如说我输入09d0001 然后新增下条的时候就出现09d0002
 
还是要用到数据库的,先从数据库中select max(编号)找出最大编号,然后进行字符串操作,取出流水码,再加 1,然后再进行字符串操作(加上流水码前面的字符串)即可~~
 
输入09d0001,--->假设该数据保存在变量sCode中,生成下一个序号的时候,从sCode的最后一位向第一位反向进行检查,查找第一个不再字符0..9当中的序号,这里应该是第3位,现在取出前3位,赋值到变量sCodePre:='09d'; sCodeBack='0001',根据sCodeBack当前数据以及长度,生成下一个序号CodeBack='0002',这一步骤应该不难。结果是 sCodePre+sCodeBack = '09d0002'
 
楼上说的很全了,最好预先设定好前置字符串和流水码的长度
 
这个是我们公司的生产的设备号,现在是92B0001 然后依次加1当然不同型号有不同数字822A001也有。然后问题的关键在: 92B0001 92B0002 92B0003 ...92B9999 92B10000 92B10001
 
200大洋啊!function GetNextCode(sCode:String):String;var sPre,sAfter:String; I,L:Integer;begin For I:=Length(sCode) Downto 1 do if not (sCode in ['0'..'9']) then Break; sPre:=Copy(sCode,1,I); sAfter:=Copy(sCode,I+1,Length(sCode)); L:=Length(sAfter); sAfter:= IntToStr(StrToInt(sAfter)+1); While Length(sAfter)<L do sAfter:='0'+sAfter; Result:= sPre+sAfter;end;
 
看楼上的200大洋,也想参入,没什么可写的。function GetNextCode(sCode:String):String;var sPre,sAfter:String; I,L:Integer;begin For I:=Length(sCode) Downto 1 do if not (sCode in ['0'..'9']) then Break; //判断不为数字,终止。 sPre:=Copy(sCode,1,I); //复制数字以前字符->sPre sAfter:=Copy(sCode,I+1,Length(sCode));//复制数字->sAfter L:=Length(sAfter); //计算数字长度->l sAfter:= IntToStr(StrToInt(sAfter)+1); //复制出来的数字加1 ->sAfter While Length(sAfter)<L do sAfter:='0'+sAfter; //不足数字长度循环前面补0 Result:= sPre+sAfter;end;
 
de410 forgot2002 scxujie yuzhizhi znxia
 
后退
顶部