发布网友 发布时间:2022-04-26 09:01
共1个回答
热心网友 时间:2022-04-10 02:05
思路 (首先 uses 中增加 StrUtils)
声明一个string变量 str_id, 来记录最大编号
声明一个string变量 str_newid, 来记录新编号
声明一个string变量 str_prefix, 来记录编号前缀
声明一个string变量 str_year, 来记录年度
声明一个string变量 str_postfix, 来记录编号后缀
声明一个string变量 str_manualid, 来记录手动输入编号
在窗体 OnShow事件增加代码
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select max [编号] from [字段] where [条件]');
//---- 假设有记录 ----//
Open;
str_id := FieldByName('[编号]').AsString;
str_prefix := LeftStr(str_id, 3); //---- 取"国统字" ----//
str_year := FormatDateTime(yyyy, Now); //---- 获取2013 ----//
str_postfix := RightStr(str_id, 1); //---- 取"号" ----//
str_newid := IntToStr(StrToInt(MidStr(str_id, 6, 2)) + 1);
str_newid := str_prefix + '[' + str_year + ']' + str_newid + str_postfix;
end;
Edit1.Text := str_newid;
如果是手动输入编号, 那么要查询一次, 看看是否已经存在
SQL.Add(' select * from [字段] where [编号] = +++'Edit1.Text'+++');
Open;
If not isEmpty then
begin
ShowMessage('编号已经存在');
end
else
begin
//---- 后续代码 ----//
end;
追问用了max()后,fieldbyname('编号').asstring;后提示编号没有发现,而把他改成fields[0].asstring 才能运行。