一段根据日期生成 id 的代码

根据日期来生成 ID  的代码
很值得保存起来

procedure TFocVoucherDetailForm.spbtNewClick(Sender: TObject);

var
 sVoucherID,sTemp,sYear,sMonth:string;

begin

    sYear:=Copy(IntToStr(YearOf(Now)),3,2);
    sMonth:=IntToStr(MonthOf(Now));
    sMonth:=Copy('0',length(sMonth),2-length(sMonth))+sMonth;
    if FocData.tbFocVoucher.IsEmpty then
    begin
       sVoucherID:=sYear+sMonth+'0001';
    end  else
    begin
       FocData.tbFocVoucher.Last;
       sTemp:=Copy(FocData.tbFocVoucher.FieldByName('VoucherID').AsString,1,4);
       if (sTemp=(sYear+sMonth)) then
       begin
          sTemp:=IntToStr(StrToInt(Copy(FocData.tbFocVoucher.FieldByName('VoucherID').AsString,5,4))+1);
          sTemp:=Copy('000',length(sTemp),4-length(sTemp))+sTemp;
          sVoucherID:=sYear+sMonth+sTemp;
       end else
          sVoucherID:=sYear+sMonth+'0001';
    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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值