delphi程序 编号自动加1的问题?

2025-12-18 08:01:07
推荐回答(1个)
回答1:

思路 (首先 uses 中增加 StrUtils)

  1. 声明一个string变量 str_id, 来记录最大编号

  2. 声明一个string变量 str_newid, 来记录新编号

  3. 声明一个string变量 str_prefix, 来记录编号前缀

  4. 声明一个string变量 str_year, 来记录年度

  5. 声明一个string变量 str_postfix, 来记录编号后缀

  6. 声明一个string变量 str_manualid, 来记录手动输入编号

  7. 在窗体 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;