u_sddwbm.pas

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

PAS
429
字号
unit U_sddwbm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Grids, DBGrids, Menus, Buttons,ADODB,DB;

type
  TForm_sddwbm = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Image1: TImage;
    Label1: TLabel;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    BitBtn1: TBitBtn;
    PopupMenu_dwbm: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    PopupMenu_bmbm: TPopupMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    Panel7: TPanel;
    Label2: TLabel;
    xs_dwbm: TEdit;
    Label3: TLabel;
    xs_dwmc: TEdit;
    Panel8: TPanel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Panel9: TPanel;
    Label4: TLabel;
    Label5: TLabel;
    xs_bmbm: TEdit;
    xs_bmmc: TEdit;
    Panel10: TPanel;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure bmbm_filter(dwbm:string);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure N1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure MenuItem3Click(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    function Delete_bm_record(bh:string):boolean;
    procedure Delete_record(zgbh:integer);

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

var
  Form_sddwbm: TForm_sddwbm;
  czfs:integer;
implementation

uses U_gzda_dm, U_wjbf;

{$R *.dfm}

procedure TForm_sddwbm.FormShow(Sender: TObject);
begin
  with gzda_dm.ADODataSet1 do begin
    if active then active:=false;
    commandtext:='select * from dwbmb order by dwbm'; //打开dwbmb
    open;
    first;
  end;
  with gzda_dm.ADODataSet2 do begin
    if active then active:=false;
    commandtext:='select * from bmbmb order by bmbm'; //打开bmbmb
    open;
    first;
  end;
  bmbm_filter(gzda_dm.ADODataSet1.fieldbyname('dwbm').AsString);
end;

procedure TForm_sddwbm.BitBtn1Click(Sender: TObject);
begin
  with gzda_dm.ADODataSet1 do begin
    if active then UpdateBatch(arALL);
  end;
  with gzda_dm.ADODataSet2 do begin
    if active then UpdateBatch(arALL);
  end;
  close;
end;

procedure TForm_sddwbm.bmbm_filter(dwbm:string);
begin
  with gzda_dm.ADODataSet2 do begin
    Filtered := False;
    Filter := 'dwbm = ' + QuotedStr(dwbm);
    Filtered := True;
    dbgrid2.Refresh;
    dbgrid1.SetFocus;
  end;
end;

procedure TForm_sddwbm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key =#13 then
     begin
       Key := #0;
       Perform(WM_NEXTDLGCTL,0,0);
     end;
end;

procedure TForm_sddwbm.N1Click(Sender: TObject);
begin
  czfs:=1;
  xs_dwbm.Text:='';
  xs_dwmc.Text:='';
  panel7.Visible:=true;
  xs_dwmc.SetFocus;
end;

procedure TForm_sddwbm.BitBtn2Click(Sender: TObject);
var
  ls_bm:string;
  ls_num:integer;
begin
  with gzda_dm.ADODataSet1 do begin
    if czfs=1 then
       begin
          if recordcount<>0 then
             begin
               last;
               ls_num:=fieldbyname('dwbm').asinteger+1;
               if ls_num<10 then
                  ls_bm:='0'+inttostr(ls_num)
               else
                  ls_bm:=inttostr(ls_num);
             end
          else
             ls_bm:='01';
          xs_dwbm.Text:=ls_bm;
          append;
       end
    else
       edit;
    fieldbyname('dwbm').AsString:=xs_dwbm.Text;
    fieldbyname('dwmc').AsString:=xs_dwmc.Text;
    post;
  end;
  panel7.Visible:=false;
  dbgrid1.SetFocus;
  dbgrid1.Refresh;
end;

procedure TForm_sddwbm.N2Click(Sender: TObject);
begin
  czfs:=2;
  with gzda_dm.ADODataSet1 do begin
    xs_dwbm.Text:=fieldbyname('dwbm').AsString;
    xs_dwmc.Text:=fieldbyname('dwmc').AsString;
  end;
  panel7.Visible:=true;
  panel7.Refresh;
  xs_dwmc.SetFocus;
end;

procedure TForm_sddwbm.N3Click(Sender: TObject);
var
  dwbm:string;
begin
  with gzda_dm.ADODataSet1 do begin
    if recordcount=0 then abort;
    if Application.MessageBox('确实要删除本条记录吗?','提示',MB_YesNO+ MB_DEFBUTTON2) <> IDYes then
       Abort;
    if Application.MessageBox('删除本条记录后,数据库中所有与之相关的数据将被删除,且不可恢复,继续吗?','提示',MB_YesNO+ MB_DEFBUTTON2) <> IDYes then
       Abort;
      
    dwbm:=fieldbyname('dwbm').AsString;
    delete;
  end;
  with gzda_dm.ADODataSet2 do begin
    UpdateBatch(arALL);
    close;
  end;
  with gzda_dm.ADOCommand1 do begin
    commandtext:='delete from bmbmb where (dwbm=:dwbm)';
    Parameters.ParamByName('dwbm').Value:=dwbm;
    Execute;
  end;
  with gzda_dm.ADODataSet2 do begin
    if active then active:=false;
    commandtext:='select * from bmbmb order by bmbm'; //打开bmbmb
    open;
    first;
  end;
  if Delete_bm_record(dwbm) then  //删除其他数据表中的数据;
     begin
       showmessage('本单位的所有数据已被删除!!');
     end;
     
  bmbm_filter(gzda_dm.ADODataSet1.fieldbyname('dwbm').AsString);
end;

procedure TForm_sddwbm.N4Click(Sender: TObject);
begin
  with gzda_dm.ADODataSet1 do begin
    UpdateBatch(arALL);
  end;
  showmessage('单位名称数据已存盘!!');
end;

procedure TForm_sddwbm.MenuItem1Click(Sender: TObject);
begin
  czfs:=1;
  xs_bmbm.Text:='';
  xs_bmmc.Text:='';
  panel9.Visible:=true;
  xs_bmmc.SetFocus;
end;

procedure TForm_sddwbm.MenuItem2Click(Sender: TObject);
begin
  czfs:=2;
  with gzda_dm.ADODataSet2 do begin
    xs_bmbm.Text:=fieldbyname('bmbm').AsString;
    xs_bmmc.Text:=fieldbyname('bmmc').AsString;
  end;
  panel9.Visible:=true;
  panel9.Refresh;
  xs_bmmc.SetFocus;
end;

procedure TForm_sddwbm.MenuItem3Click(Sender: TObject);
var
  bmbm:string;
begin
  with gzda_dm.ADODataSet2 do begin
    if recordcount=0 then abort;
    if Application.MessageBox('确实要删除本条记录吗?','提示',MB_YesNO+ MB_DEFBUTTON2) <> IDYes then
       Abort;
    if Application.MessageBox('删除本条记录后,数据库中所有与之相关的数据将被删除,且不可恢复,继续吗?','提示',MB_YesNO+ MB_DEFBUTTON2) <> IDYes then
       Abort;
    bmbm:=fieldbyname('dwbm').AsString+fieldbyname('bmbm').AsString;
    delete;
    if Delete_bm_record(bmbm) then
       begin
         showmessage('本部门的所有数据已被删除!!');
       end;
  end;
end;

procedure TForm_sddwbm.MenuItem4Click(Sender: TObject);
begin
  with gzda_dm.ADODataSet2 do begin
    UpdateBatch(arALL);
  end;
  showmessage('编码名称数据已存盘!!');
end;

procedure TForm_sddwbm.BitBtn3Click(Sender: TObject);
begin
  panel7.Visible:=false;
  dbgrid1.Refresh;
  dbgrid1.SetFocus;
end;

procedure TForm_sddwbm.BitBtn4Click(Sender: TObject);
var
  ls_bm:string;
  ls_num:integer;
begin
  with gzda_dm.ADODataSet2 do begin
    if czfs=1 then
       begin
          if recordcount<>0 then
             begin
               last;
               ls_num:=fieldbyname('bmbm').asinteger+1;
               if ls_num<10 then
                  ls_bm:='0'+inttostr(ls_num)
               else
                  ls_bm:=inttostr(ls_num);
             end
          else
             ls_bm:='01';
          xs_bmbm.Text:=ls_bm;
          append;
       end
    else
       edit;
    fieldbyname('dwbm').AsString:=gzda_dm.ADODataSet1.fieldbyname('dwbm').AsString;
    fieldbyname('bmbm').AsString:=xs_bmbm.Text;
    fieldbyname('bmmc').AsString:=xs_bmmc.Text;
    post;
  end;
  panel9.Visible:=false;
  dbgrid2.SetFocus;
  dbgrid2.Refresh;
end;

procedure TForm_sddwbm.BitBtn5Click(Sender: TObject);
begin
  panel9.Visible:=false;
  dbgrid2.Refresh;
  dbgrid2.SetFocus;
end;

procedure TForm_sddwbm.DBGrid1CellClick(Column: TColumn);
begin
  bmbm_filter(gzda_dm.ADODataSet1.fieldbyname('dwbm').AsString);
end;

procedure TForm_sddwbm.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  with gzda_dm.ADODataSet1 do begin
    case key of
      37,38:
        if not bof  then
           begin
             Prior;
             bmbm_filter(gzda_dm.ADODataSet1.fieldbyname('dwbm').AsString);
             next;
           end;
      39,40:
        if not eof  then
           begin
             next;
             bmbm_filter(gzda_dm.ADODataSet1.fieldbyname('dwbm').AsString);
             Prior;
           end
    end;
  end;

end;

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

procedure TForm_sddwbm.Delete_record(zgbh:integer);
begin
  with gzda_dm.ADOCommand1 do begin
    commandtext:='delete from gzjl where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
    commandtext:='delete from xxjl where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
    commandtext:='delete from zcprjl where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
    commandtext:='delete from gztzqk where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
    commandtext:='delete from jxjy where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
    commandtext:='delete from jfjl where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
    commandtext:='delete from poqk where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
    commandtext:='delete from shgx where zgbh=:zgbh';
    Parameters.ParamByName('zgbh').Value:=zgbh;
    Execute;
  end;
end;

function TForm_sddwbm.Delete_bm_record(bh:string):boolean;
begin
  with gzda_dm.ADODataSet_cx do begin
    if active then active:=false;
    commandtext:='select * from zgdab where (zgxh like :bh) order by zgxh';
    Parameters.ParamByName('bh').Value:=bh+'%';
    open;
    if recordcount=0 then
       begin
         delete_bm_record:=false;
         abort;
       end;
   end;
    // 进行数据备份
   Form_SJbf:=TForm_SJbf.create(application); //建立
   Form_SJbf.showmodal; //以有模式方式显示
   Form_SJbf.free ;    //释放窗体
   with gzda_dm.ADODataSet_cx do begin
      first;
      while not eof do begin
        delete_record(fieldbyname('zgbh').AsInteger);  //删除记录
        next;
      end;
  end;
  with gzda_dm.ADOCommand1 do begin
    commandtext:='delete from zgdab where (zgxh like :bh)';
    Parameters.ParamByName('bh').Value:=bh+'%';
    Execute;
  end;
  delete_bm_record:=true;
end;

end.

⌨️ 快捷键说明

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