//生成信息编号函数
function TFrm_Intro_Regi.GetNewId(tablename,pkname:string):string;
var
strnewid:string;
strsql:string;
strpkdate:string;
strdate:string;
transstr:string;
IntNum:Integer;
PreZero:String;
Y1,M1,D1:Word;
I:Integer;
begin
Decodedate(date(),Y1,M1,D1); //获取当前年份
strdate:=inttostr(y1);
with ADOQuery2 do
begin
close;
sql.clear;
strsql:='select max('+pkname+') from '+tablename+' WITH (TABLOCK) where '+pkname+' like '+'''JS%'''; //取最大编号
sql.add(strsql);
open;
end;
TransStr:=adoquery2.fields[0].asstring;
strpkdate:=copy(TransStr,4,4); //取出编号中的年份
// I:=comparestr(strpkdate,strdate);
if (TransStr='') or (strpkdate<>strdate) then //与当前年份比较,若不同取当前年份
StrNewID :='JS-'+strdate+'-'+'0001'
else
begin
TransStr:=Trim(TransStr);
TransStr:=copy(TransStr,9,4);
TransStr:=IntToStr(StrToInt(TransStr)+1);
IntNum:=Length(TransStr);
PreZero:=''; //流水号补零
for I:=1 to 4-IntNum do
PreZero:=PreZero+'0';
StrNewID:='JS-'+strdate+'-'+PreZero+TransStr;
end;
adoQuery2.Close;
Result:=StrNewID;
end;
//上面错了,改正
function AutoOrderNo(table,OrderNum:string):string;
var strsql:string;
OrderNo:string;
day:string;
str:string;
begin
str:=formatdatetime('yyyy_mm_dd',date());
day:= copy(str,3,2)+copy(str,6,2)+copy(str,9,2);
strsql:='select max('+OrderNum+') as OrderNum from '+table+' where '+OrderNum+' LIKE '+''''+day+'%''';
if not Query1.Eof then
begin
OrderNo :=trim(objadodataset.Fields[0].text);
if copy(OrderNum,1,6)=day then
begin
str:=inttostr(strtoint(copy(OrderNum,7,3))+1);
if length(str)=1 then str:='00'+str;
if length(str)=2 then str:='0'+str;
result:=day+str;
end
else
result:=day+'001';
end
else
result:=day+'001';
end;
end;
//上面错了,改正
function AutoOrderNo(zd:string):string;
var strsql:string;
OrderNo:string;
day:string;
str:string;
begin
str:=formatdatetime('yyyy_mm_dd',date());
day:= copy(str,3,2)+copy(str,6,2)+copy(str,9,2);
strsql:='select max('+zd+') as zd from '+table+' where '+zd+' LIKE '+''''+day+'%''';
if not Query1.Eof then
begin
OrderNo :=trim(objadodataset.Fields[0].text);
if copy(OrderNo,1,6)=day then
begin
str:=inttostr(strtoint(copy(OrderNo,7,3))+1);
if length(str)=1 then str:='00'+str;
if length(str)=2 then str:='0'+str;
result:=day+str;
end
else
result:=day+'001';
end
else
result:=day+'001';
end;
end;
function AutoOrderNo(table,zd:string):string;
var strsql:string;
OrderNo:string;
day:string;
str:string;
begin
str:=formatdatetime('yyyy_mm_dd',date());
day:= copy(str,3,2)+copy(str,6,2)+copy(str,9,2);
strsql:='select max('+zd+') as zd from '+table+' where '+zd+' LIKE '+''''+day+'%''';
if not Query1.Eof then
begin
OrderNo :=trim(objadodataset.Fields[0].text);
if copy(bh,1,6)=day then
begin
str:=inttostr(strtoint(copy(bh,7,3))+1);
if length(str)=1 then str:='00'+str;
if length(str)=2 then str:='0'+str;
result:=day+str;
end
else
result:=day+'001';
end
else
result:=day+'001';
end;
end;
function tbhscq.buildbh1223(table,zd:string):string;
var strsql:string;
bh:string;
day:string;
str:string;
begin
str:=formatdatetime('yyyy_mm_dd',date());
day:= copy(str,4,1)+copy(str,6,2)+copy(str,9,2);
strsql:='select max('+zd+') as zd from '+table+' where '+zd+' LIKE '+''''+day+'%''';
try
with ObjAdoDataSet do
begin
Connection:=ObjAdoConnection;
CommandType:=cmdtext;
CommandText:=strsql;
Active:=True;
if objadodataset.Fields[0].text<>'' then
begin
bh:=trim(objadodataset.Fields[0].text);
if copy(bh,1,5)=day then
begin
str:=inttostr(strtoint(copy(bh,6,3))+1);
if length(str)=1 then str:='00'+str;
if length(str)=2 then str:='0'+str;
result:=day+str;
end
else
result:=day+'001';
end
else
result:=day+'001';
end;
except
showmessage('数据库连接错误,请重试。');
end;
end;