u_renumber.pas

来自「人事管理程序源码」· PAS 代码 · 共 119 行

PAS
119
字号
unit U_ReNumber;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Gauges, StdCtrls, Buttons, ExtCtrls,ADODB;

type
  TForm_renumber = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Gauge1: TGauge;
    procedure BitBtn1Click(Sender: TObject);
    procedure renumber(dw_bm:string;DataSet:TADODataSet);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form_renumber: TForm_renumber;

implementation

uses U_gzda_dm;

{$R *.dfm}

procedure TForm_renumber.BitBtn1Click(Sender: TObject);
var
  dw_bm:string;
  jls,i:integer;
  bfb:integer;
begin
  if Application.MessageBox('确实要进行人员重新编号吗?','提示',MB_YesNO+ MB_DEFBUTTON2) <> IDYes then
     Abort;
  Gauge1.Visible:=true;
  with gzda_dm.ADODataSet1 do begin
    if active then active:=false;
    commandtext:='select * from bmbmb order by dwbm,bmbm';
    open;
    first;
    if recordcount=0 then abort;
    i:=0;
    jls:=recordcount;
    while not eof do begin
      dw_bm:=fieldbyname('dwbm').AsString+fieldbyname('bmbm').AsString;
      i:=i+1;
      if gzda_dm.ADODataSet_cx.Active then gzda_dm.ADODataSet_cx.Active:=false;
      gzda_dm.ADODataSet_cx.CommandText:='select * from zgdab where (zgxh like :cxbh) order by zgxh';
      gzda_dm.ADODataSet_cx.Parameters.ParamByName('cxbh').Value:=dw_bm+'%';
      gzda_dm.ADODataSet_cx.Open;
      bfb:=(i*100) div jls;
      Gauge1.Progress:=bfb;
      Gauge1.Refresh;
      if gzda_dm.ADODataSet_cx.RecordCount=0 then   //记录数为0 退出
         begin
           next;
           Continue;
         end
      else
         begin
           gzda_dm.ADODataSet_cx.last;
           if gzda_dm.ADODataSet_cx.recordcount=strtoint(copy(gzda_dm.ADODataSet_cx.fieldbyname('zgxh').AsString,5,4)) then  //最后记录的记录号=记录数 退出
              begin
                next;
                Continue;
              end  
           else
              renumber(dw_bm,gzda_dm.ADODataSet_cx);
         end;
      next;
    end;
  end;
  showmessage('记录重新编号完毕!');
  close;
end;

procedure TForm_renumber.renumber(dw_bm:string;DataSet:TADODataSet);
var
  i:integer;
  i_str:string;
begin
  with DataSet do begin
    first;
    i:=0;
    while not eof do begin
      i:=i+1;
      i_str:=dw_bm+copy('00000',1,4-length(trim(inttostr(i))))+trim(inttostr(i));
      edit;
      fieldbyname('zgxh').asstring:=i_str;
      post;
      next;
    end;
    UpdateBatch(arALL);
  end;
end;
procedure TForm_renumber.BitBtn2Click(Sender: TObject);
begin
  close;
end;

procedure TForm_renumber.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  gzda_dm.DataModuleDestroy(self);
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?