5,379
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE [TestTable] ( [AutoID] [int] IDENTITY (1, 1) NOT NULL , [id] [varchar] (15) NOT NULL )
ALTER TABLE [TestTable] WITH NOCHECK ADD CONSTRAINT [PK_TestTable] PRIMARY KEY NONCLUSTERED ( [AutoID] )
SET IDENTITY_INSERT [TestTable] ON
INSERT [TestTable] ( [AutoID] , [id] ) VALUES ( 1 , '110729002' )
SET IDENTITY_INSERT [TestTable] OFF
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=newid;
end;
function TForm1.newid: string;
var
qt_:Tadoquery;
dt_:TDateTime;
s_:string;
begin
qt_:=TADOQuery.Create(nil);
dt_:=now;
try
with qt_ do
begin
try
Connection:=ADOConnection1;
sql.Text:='select top 1 [id] from [TestTable] where substring([id],1,6)=:temp order by [id] desc';
Parameters.ParamByName('temp').Value:=FormatDateTime('yymmdd',dt_);
Open;
if qt_.Fields.Fields[0].IsNull then
s_:=FormatDateTime('yymmdd',dt_)+FormatFloat('0000',1)
else
s_:=FormatDateTime('yymmdd',dt_)+FormatFloat('0000',(StrToInt(copy(qt_.Fields.Fields[0].value,7,4))+1));
Result:=s_;
except
on E:exception do
begin
ShowMessage('操作被中断,原因:生成标识号失败,请稍候再试,原因:'+e.Message);
end;
end;
end;
finally
qt_.Free;
end;
end;