概述
以前开发的规则是从数据库中以计数形式累计+1,但是出现删除单据后会出现变的错乱。
遂又寻找方案,在群里,群主提到了他的编号规则,时间日期,产生一启发。
方案1:
代码:jbbh.Caption:='SC'+FormatDateTime('yymmddhhmmss',Now())+inttostr(Random(9));/
一句话搞定,另或采用函数:
代码如下:
function zibianhao(str1: string): string; {自编号//代码由序铭提供}
var
Hour, Min, Sec, MSec: Word;
str2: string;
begin
DecodeTime(Now, Hour, Min, Sec, MSec);
str2 := inttostr(Random(Sec));
if length(str2) = 1 then
str2 := '0' + str2;
Result := str1 + FormatDateTime('yyyymmddhhmmss', Now()) + str2;
end;
//--------------------------------------------------------------------------//
整理了一下,变成一个过程放在一个类中
class function TPublicFunction.GetAutoCreateIDWithDate(theDataSet:TdataSet;FieldName:string):string;
var
sOrderID,sTemp,sYear,sMonth:string;
begin
if not theDataSet.Active then theDataSet.Open;
sYear:=Copy(IntToStr(YearOf(Now)),3,2);
sMonth:=IntToStr(MonthOf(Now));
sMonth:=Copy('0',length(sMonth),2-length(sMonth))+sMonth;
if theDataSet.IsEmpty then
begin
sOrderID:=sYear+sMonth+'0001';
end else
begin
theDataSet.Last;
sTemp:=Copy(theDataSet.FieldByName(FieldName).AsString,1,4);
if (sTemp=(sYear+sMonth)) then
begin
sTemp:=IntToStr(StrToInt(Copy(theDataSet.FieldByName(FieldName).AsString,5,4))+1);
sTemp:=Copy('000',length(sTemp),4-length(sTemp))+sTemp;
sOrderID:=sYear+sMonth+sTemp;
end else
sOrderID:=sYear+sMonth+'0001';
end ;
result := sOrderID;
end;
————————————————
版权声明:本文为CSDN博主「qi_jianzhou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qi_jianzhou/article/details/619575
最后
以上就是背后大碗为你收集整理的delphi表单自编号,流水号规则的全部内容,希望文章能够帮你解决delphi表单自编号,流水号规则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复