搞定了,谢谢李工~~
需求是按照“年-类别-流水号”的规则进行编码,其中流水号为数据库中该年该类别流水号中的最大值;
由于类别是数据库中记录的字段,所以编码只能在保存的时候生成;
生成编码时需要判断编码字段是否为空,这样如果修改记录的话,编码字段就不会更改。
代码如下:
procedure TJSJDXX.DataSetJSJDBeforePost(DataSet: TDataSet);
const
cZeroLeng = '000';
var
lDateStr, lLBStr, lTmpStr, lBHStr: string;
begin
if DataSetJSJD.FieldByName('WTJS').IsNull then
begin
lDateStr := SysUtils.FormatDateTime('yyyy', Business.Data.SysSrv.SysService.Time);
lLBStr := DataSetJSJD.FieldByName('JDXMLB').AsString;
lTmpStr := TCommonUtils.GetAutoIncreaseID(Self.Context,lDateStr+'-'+lLBStr,'');
lTmpStr := StringUtils.Copy(cZeroLeng, 1, Length(cZeroLeng) - Length(lTmpStr))+lTmpStr;
lBHStr := lDateStr+'-'+lLBStr+'-'+lTmpStr;
DataSetJSJD.FieldByName('WTJS').AsString := lBHStr;
end;
end;
再次感谢李工~~ |