我是靠谱客的博主 背后大碗,最近开发中收集的这篇文章主要介绍delphi表单自编号,流水号规则,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

以前开发的规则是从数据库中以计数形式累计+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表单自编号,流水号规则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部