⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hm_dp.~pas

📁 本课题是为企业人事管理提供现代化技术支持的管理信息系统
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
var
  tempsnum,temppnum:integer;
begin
  if ADOQuery2.Active then
    if ADOQuery2.RecordCount > 0 then
    
    if MessageBox(handle, '要删除此部门么?', '提示', mb_IconQuestion + mb_OkCancel) = idOk then
    begin
        pnum:=adoquery2.FieldByName('父编号').AsInteger;
        snum:=adoquery2.FieldByName('编号').AsInteger;
        //由自身编号是否和最大子号相等确定是否有子部门
        if snum <> adoquery2.FieldByName('最大子号').AsInteger then
        begin
            ShowMessage('该部门拥有子部门,请先清除子部门!!');
        end
        else
        begin
            //从部门信息表中删除该条信息
            ADOQuery3.close;
            ADOQuery3.SQL.Clear;
            ADOQuery3.SQL.Text := 'delete from 部门信息 where 编号 ='+inttostr(snum);
            ADOQuery3.ExecSQL;

            tempsnum:= snum;
            temppnum:= pnum;
            //更新负责人的基本信息
            ADOQuery4.close;
            ADOQuery4.SQL.Clear;
            ADOQuery4.SQL.Text := 'update 基本信息 set 部门 = '+QuotedStr('') + 'where 姓名 = ' + QuotedStr(Combobox1.Text);
            ADOQuery4.ExecSQL;
            //更新部门组织图TreeView1
            try
              CreateTreeNodes(nil,nil);
            except
            end;
            pnode:= treeview1.Items.Item[strtoint(temptable[temppnum,1])];
            pnode.Selected;
            pnode.MakeVisible;
            //查看删除的部门的编号是否上级部门的最大子号
            if not(tempsnum < strtoint(temptable[temppnum,2]))then
            begin
                pnode:=pnode.GetLastChild;
                if pnode <> nil then
                begin
                //更新上级部门的最大子号
                  ADOQuery3.close;
                  ADOQuery3.SQL.Clear;
                  ADOQuery3.SQL.Text := 'update 部门信息 set 最大子号 ='+inttostr(indextable[pnode.AbsoluteIndex+1,1])+'where 编号 ='+inttostr(temppnum);
                  ADOQuery3.ExecSQL;
                  temptable[temppnum,2]:= inttostr(indextable[pnode.AbsoluteIndex+1,1]);
                end
                else
                begin
                  ADOQuery3.close;
                  ADOQuery3.SQL.Clear;
                  ADOQuery3.SQL.Text := 'update 部门信息 set 最大子号 ='+inttostr(temppnum)+'where 编号 ='+inttostr(temppnum);
                  ADOQuery3.ExecSQL;
                end;
            end;
            if treeview1.Items.Count > 0 then
              treeview1.Items[0].Selected := True;
            TreeView1Click(nil);
        end;
    end;
end;

//-----------点击确定按钮,处理增加子部门,增加同级部门,修改部门信息的实际执行工作
procedure Thm_dpForm.Button5Click(Sender: TObject);
var
  newnum:integer;
begin
  if Trim(DBEdit1.Text) = '' then
  begin
    showmessage('部门名称不能为空');
    exit;
  end;
  if Trim(ComboBox1.Text) = '' then
  begin
    showmessage('负责人不能为空!');
    exit;
  end;
  if Trim(DBEdit4.Text) = '' then
  begin
    showmessage('员工号不能为空!');
    exit;
  end;
  if ComboBox1.Items.IndexOf(Trim(ComboBox1.Text)) < 0 then
  begin
    ShowMessage('该部门不存在该负责人:'+ Trim(ComboBox1.Text));
    Exit;
  end;
  if Button1.Visible or  Button2.Visible then
  begin
    ADOQuery4.Close;
    ADOQuery4.SQL.Text := 'Select * From 基本信息 Where 部门 = ' + QuotedStr(Trim(DBEdit1.Text));
    ADOQuery4.Open;
    if ADOQuery4.RecordCount > 0 then
    begin
      showmessage('已存在相同名称的部门,请重新设置!');
      exit;
    end;
  end;
  //
    if Button3.Visible=true then //如果是修改部门信息
    begin
        pnode:=treeview1.Items.Item[strtoint(temptable[strtoint(dbedit2.EditText),1])];
        pnode.Text:=dbedit1.EditText;//更新部门组织图TreeView1的节点信息
        adoquery2.FieldByName('员工号').AsString := Trim(DBEdit4.Text);
        adoquery2.FieldByName('负责人').AsString := Trim(ComboBox1.Text);
        adoquery2.Post;//更新部门信息表
    end
    else //增加子部门,增加同级部门操作相同,
    begin
        //插入部门
        sname:=Trim(DBEdit1.EditText);
        adoquery2.FieldByName('名称').AsString := Trim(DBEdit1.EditText);
        adoquery2.FieldByName('负责人').AsString := Trim(ComboBox1.Text);
        adoquery2.FieldByName('员工号').AsString := Trim(DBEdit4.Text);
        adoquery2.FieldByName('父编号').AsInteger := pnum;
        adoquery2.FieldByName('最大子号').AsInteger := snum;
        adoquery2.FieldByName('层次').AsInteger:=ItemLevel;
        adoquery2.post;
        //更新新部门的上级部门最大子号
        ADOQuery3.close;
        ADOQuery3.SQL.Clear;
        ADOQuery3.SQL.Text := 'update 部门信息 set 最大子号 ='+inttostr(snum)+'where 编号 ='+inttostr(pnum);
        ADOQuery3.ExecSQL;
        //更新部门组织图TreeView1
        newnum:=snum;
        CreateTreeNodes(nil,nil);
        pnode:=treeview1.Items.Item[strtoint(temptable[newnum,1])];
        pnode.MakeVisible;
        //更新基本表中的部门信息
        ADOQuery4.Close;
        ADOQuery4.SQL.Text := 'update 基本信息 set 部门 ='+QuotedStr(Trim(DBEdit1.Text)) +'where 姓名 ='+QuotedStr(Trim(ComboBox1.Text));
        ADOQuery4.ExecSQL;
    end;
    //更新状态
    Button5.Visible:=false;
    Button6.Visible:=false;
    Button1.Enabled:=true;
    Button2.Enabled:=true;
    Button3.Enabled:=true;
    Button1.Visible:=true;
    Button2.Visible:=true;
    Button3.Visible:=true;
    Button4.Visible:=true;
end;
//-----------点击取消按钮,取消增加子部门,增加同级部门,修改部门信息
procedure Thm_dpForm.Button6Click(Sender: TObject);
begin
    Button5.Visible:=false;
    Button6.Visible:=false;
    Button1.Enabled:=true;
    Button2.Enabled:=true;
    Button3.Enabled:=true;
    Button1.Visible:=true;
    Button2.Visible:=true;
    Button3.Visible:=true;
    Button4.Visible:=true;
    ADOQuery2.Cancel;
    if Name <> '' then
      ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(Name);

end;

procedure Thm_dpForm.DBEdit3Exit(Sender: TObject);
var
  sText, sDP: string;
begin
  if ADOQuery2.Active then
  begin
    if ADOQuery2.State In [dsEdit, dsInsert] then
    begin
      sText := Trim(Combobox1.Text);
      sDP := Trim(DBEdit1.Text);
      if sDP = '' then
      begin
        ShowMessage('请先输入部门信息');
        //DBEdit3.Field.AsString := '';
        Exit;
      end;
      ADOQuery4.Close;
      ADOQuery4.SQL.Text := 'Select * From 基本信息 Where 姓名 =' + QuotedStr(sText) + ' and 部门 = ' + QuotedStr(sDP);
      ADOQuery4.Open;
      if ADOQuery4.RecordCount <= 0 then
      begin
        ShowMessage(sText + ' 负责人不存在');
        //DBEdit3.Field.AsString := '';
      end
      else
        ADOQuery2.FieldByName('员工号').AsString := Trim(ADOQuery4.FieldbyName('编号').AsString);
    end;
  end;
end;

procedure Thm_dpForm.ADOQuery2AfterOpen(DataSet: TDataSet);
begin
  Button1.Enabled := ADOQuery2.RecordCount > 0 ;
  Button3.Enabled := ADOQuery2.RecordCount > 0 ;
  Button4.Enabled := ADOQuery2.RecordCount > 0 ;
end;

procedure Thm_dpForm.SetMen(const AName,ADP: string);
var
  i: Integer;
begin
  ADOQuery4.close;
  ADOQuery4.SQL.Clear;
  if ADP <> '' then//本部门的人
    ADOQuery4.SQL.Text := 'Select * From 基本信息 Where 部门 = ' + QuotedStr(ADP)
  else
    ADOQuery4.SQL.Text := 'Select * From 基本信息';
  ADOQuery4.Open;
  Combobox1.Clear;
  for i :=0 to ADOQuery4.RecordCount - 1 do
  begin
    Combobox1.AddItem(Trim(ADOQuery4.FieldByName('姓名').AsString), nil);
    ADOQuery4.next;
  end;
  ADOQuery4.close;
  if AName <> '' then
  begin
    if Combobox1.Items.Count > 0 then
      Combobox1.ItemIndex := Combobox1.Items.IndexOf(AName);
    Name := AName;
  end;
end;

procedure Thm_dpForm.ValidButton;
var
  B: Boolean;
begin
  B := (Trim(DBEdit1.Text) <> '') and (Trim(DBEdit2.Text) <> '') and (Trim(DBEdit4.Text) <> '') and (Trim(ComboBox1.Text) <> '');;
  Button1.Enabled := B;
  Button2.Enabled := B;
end;

procedure Thm_dpForm.ComboBox1Select(Sender: TObject);
begin
  ADOQuery4.close;
  ADOQuery4.SQL.Clear;
  ADOQuery4.SQL.Text := 'Select * From 基本信息 Where 姓名 = '+ QuotedStr(Trim(Combobox1.Text));
  ADOQuery4.Open;
  if ADOQuery4.RecordCount > 0 then
    DBEdit4.Text := Trim(ADOQuery4.FieldByName('编号').AsString);
end;

procedure Thm_dpForm.ValidMen(const AExceptMen: string);
var
  i: Integer;
begin
  i := 0;
  while i < Combobox1.Items.Count do
  begin
    if AExceptMen <> Combobox1.Items[i] then
    begin
      ADOQuery4.close;
      ADOQuery4.SQL.Clear;
      ADOQuery4.SQL.Text := 'Select * From 部门信息 Where 负责人 = ' + QuotedStr(Combobox1.Items[i]);
      ADOQuery4.Open;
      if ADOQuery4.RecordCount > 0 then
      begin
        Combobox1.Items.Delete(i);
        continue;
      end;
    end;
    inc(i);
  end;
  if Combobox1.Items.Count = 0 then
  begin
    Button6Click(nil);
    showmessage('没有空闲职位的人员可选,请先添加职员,再新增部门!');
    TreeView1Click(nil);
  end;
end;

end.

⌨️ 快捷键说明

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