SELECT top 1 FMAX FROM BTABLE ORDER BY FMAX DESC这样取得最大数后,我这编码规则两位数的从01开始到99,然后是A0到A9,然后是B0到B9一直到Z9
Z9之后从AA-AZ 然后BA-BZ一直到ZZ。。
这样如何从最大号加1实现啊??各位能否帮忙写一下如何用DELPHI实现?
Z9之后从AA-AZ 然后BA-BZ一直到ZZ。。
这样如何从最大号加1实现啊??各位能否帮忙写一下如何用DELPHI实现?
解决方案 »
- delphi with do语句有没这样的用法???
- 优先级的讨论,散小分。
- HELP ADO连接EXCLE的问题 急死人了 。。。。。。。。。。。。。。解决了 马上给分 嫌少再加
- 如何做一个导航界面
- StringGrid如何實現滾動條移動時相應的文本框也一起移動?(即如何實現StringGrid的滾動條移動事件)
- 急问:请高手帮帮忙!
- 在CLXapplication中,怎样调用shellexecute函数来实现超连接,多谢各位帮忙,在线等待
- 高分求自动生成拼音码的函数!!
- 请问如何得到服务器的系统日期时间
- 截取字符串
- 这条简单的SQL有错?为什么?
- 高分求好心人注解一下这个代码,急!!在线等
str := xxx.FieldByName('FMax').AsString;//取得FMax
str := IntToHex(StrToInt('$'+str) + 1),2);
B0就比AA~AZ大
首先是01-99
然后是A0-A9-B0-B9......Z0-Z9然后是AA-AZ-BA-BZ......ZA-ZZ就是这样的效果。。
CON_NUM_36: array [0..35] of char= ('0'..'9','A'..'Z');//..这种连续区间,自己拆分。
var
str: String;
Str_0,Str_1: String;
I: Integer;
begin
str := xxx.FieldByName('FMax').AsString;//取得FMax
ShowMessage(Str);
Str_0 := UpperCase(Str[1]);
Str_1 := UpperCase(Str[2]);
//先处理低位
case Str_1 of
'0'..'9':
I := Ord(Str_1) - Ord('0');
'A'..'Z':
I := Ord(Str_1) - Ord('A') + 10;
else
Exit;//出错最好Raise Exception
end; Inc(I);//从低位加1 Str_1 := CON_NUM_36[I mod 36];//低位取余 I := I div 36;//取进位 //高位处理
case Str_0 of
'0'..'9':
I := Ord(Str_0) - Ord('0') + I;//高位加进位
'A'..'Z':
I := Ord(Str_0) - Ord('A') + 10 + I;//高位加进位
else
Exit;//出错最好Raise Exception
end; //得到高位
Str_0 := CON_NUM_36[I mod 36]; //高低位拼合
Str := Str_0+Str_1;//Str就是最终加1之后的编码之后
ShowMessage(Str);
end;
var
tmp1 : char;
tmp2 : char;
begin
tmp1 := value[1];
tmp2 := value[2];
if tmp2 ='9' then
begin
if tmp1 = 'Z' then
begin
tmp2:='A';
tmp1:='A';
end
else if tmp1 ='9' then
begin
tmp1 := 'A';
tmp2 := '0';
end
else
begin
tmp2 := '0';
tmp1 := char(ord(tmp1)+1);
end;
end
else if tmp2 ='Z' then
begin
tmp2 :='A';
tmp1 := char(ord(tmp1)+1);
end
else
tmp2 := char(ord(tmp2)+1);
AddOne := tmp1 +tmp2;
end;
@ID varchar(2)
AS
declare @tmp1 varchar(1),@tmp2 varchar(1)
set @tmp1 = substring(@ID,1,1)
set @tmp2 = substring(@ID,2,1)
if @tmp2 ='9'
begin
if @tmp1 ='Z'
begin
set @tmp1 ='A'
set @tmp2='A'
end
else if @tmp1 ='9'
begin
set @tmp1='A'
set @tmp2='0'
end
else
begin
set @tmp1 = char( ASCII( @tmp1) +1 )
set @tmp2 ='0'
end
end
else if @tmp2='Z'
begin
set @tmp2 ='A'
set @tmp1 = char( ASCII( @tmp1) +1 )
end
else
set @tmp2 = char( ASCII( @tmp2) +1 )select @tmp1 +@tmp2