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

📄 sysdata_manage.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
📖 第 1 页 / 共 4 页
字号:
     begin
        close;sql.clear;
        sql.add('select empid, year_month,sum(money) as total from v_borrow');
        sql.add('where TJflag=0 and empid=:v_empid');
        sql.add('group by year_month,empid order by  year_month');
        parameters.ParamValues['v_empid']:=adoqemp.fieldvalues['empid'];
        open;
        
        while not eof do
        begin
          DataTJ_flag:=true; //初始化标量
          //4.2 数据开始提交
          datamod.ADOCon.BeginTrans;
          with ADOQupdate do
          begin
            //4.2.1得到当前人员当月的收支总表的记录
            close; sql.Clear;
            sql.Add('select * from personshouzhi where empid=:v_empid and yearmonth=:V_yearmonth');
            parameters.ParamValues['v_empid']:=adoqemp.FieldValues['empid'];
            parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
            try
              execsql; open;
            except
              if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
              DataTJ_flag:=false; break;
            end;//4.2.1.End
            //4.2.2如果该员工该月存在收支记录,则修改收入
            if recordcount>0 then
            begin
              close; sql.Clear;
              sql.Add('update personshouzhi set zhi=zhi+:v_total');
              sql.Add('where empid=:v_empid and yearmonth=:V_yearmonth');
              parameters.ParamValues['v_empid']:=adoqemp.FieldValues['empid'];
              parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
              parameters.ParamValues['v_total']:=adoqtmp.FieldValues['total'];
              try
                execsql;
              except
                if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                DataTJ_flag:=false; break;
              end;

              //4.2.2.1如果员工工序收入入总账成功则修改[Tjflag]字段值
              with ADOQ_TJFlag do
              begin
                close; sql.Clear;
                sql.Add('update brrow set Tjflag=1 where empid=:v_empid');
                parameters.ParamValues['v_empid']:=adoqtmp.FieldValues['empid'];
                try
                  execsql;
                except
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  DataTJ_flag:=false; break;
                end;
              end;//4.2.2.1.End
            end//2.2.End
            else
            //如果没找到则添加.Else
            begin
              //2.3如果个人月收支表中没找到记录则直接新增
              if ADOQpersonshouzhi.RecordCount =0 then
              begin
                close; sql.Clear;
                sql.Add('insert into personshouzhi(empid,yearmonth,zhi)');
                sql.Add('values(:v_empid,:v_yearmonth,:v_zhi)');
                parameters.ParamValues['v_empid']:=adoqemp.FieldValues['empid'];
                parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
                parameters.ParamValues['v_zhi']:=adoqtmp.FieldValues['total'];
                try
                  execsql;
                except
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  DataTJ_flag:=false; break;
                end;
              end//2.3.End
              //2.4如果个人收支表中已有收入记录则找到上条记录取上月结余
              else
              begin
                close; sql.Clear;
                sql.Add('insert into personshouzhi(empid,yearmonth,zhi,lastbalance)');
                sql.Add('values(:v_empid,:v_yearmonth,:v_zhi,:V_lastbalance)');
                parameters.ParamValues['v_empid']:=adoqemp.FieldValues['empid'];
                parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
                parameters.ParamValues['v_zhi']:=adoqtmp.FieldValues['total'];
                parameters.ParamValues['v_lastbalance']:=get_lastbalance(adoqemp.FieldValues['empid'],adoqtmp.FieldValues['year_month']);
                try
                  execsql;
                except
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  DataTJ_flag:=false; break;
                end;
              end;//2.4.End
              //2.5.2如果员工工序收入入总账成功则修改[Tjflag]字段值
              with ADOQ_TJFlag do
              begin
                close; sql.Clear;
                sql.Add('update brrow set Tjflag=1 where empid=:v_empid');
                parameters.ParamValues['v_empid']:=adoqtmp.FieldValues['empid'];
                try
                  execsql;
                except
                  if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
                  DataTJ_flag:=false; break;
                end;
              end;//2.5.2.End
            end;//如果没找到则添加.Else.End
          end;//while not eof do.End.2
          //2.提交数据
          if not DataTJ_flag then
          begin
            if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
            MsgErr(handle,'统计人员收支总账报表失败--员工支出!');
            break; exit;
          end;
          if datamod.ADOCon.InTransaction then
          begin
            try
              datamod.ADOCon.CommitTrans;
            except
              MsgErr(handle,'统计人员收支总账报表失败--员工支出!');
              if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
              break; exit;
            end;
          end;
          next;
        end; //while not eof do
    end;//计算支出结束

{    //如果没有收支记录则新增一条数据
    with ADOQupdate do
    begin
      //4.2.1得到当前人员当月的收支总表的记录
      close; sql.Clear;
      sql.Add('select * from personshouzhi where empid=:v_empid and yearmonth=:V_yearmonth');
      parameters.ParamValues['v_empid']:=adoqemp.FieldValues['empid'];
      parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
      try
        execsql; open;
      except
        if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
        DataTJ_flag:=false; break;
      end;//4.2.1.End
      //4.2.2如果该员工该月存在收支记录,则修改收入
      if recordcount>0 then
      begin
        close; sql.Clear;
        sql.Add('update personshouzhi set zhi=zhi+:v_total');
        sql.Add('where empid=:v_empid and yearmonth=:V_yearmonth');
        parameters.ParamValues['v_empid']:=adoqemp.FieldValues['empid'];
        parameters.ParamValues['V_yearmonth']:=adoqtmp.FieldValues['year_month'];
        parameters.ParamValues['v_total']:=adoqtmp.FieldValues['total'];
        try
          execsql;
        except
          if datamod.ADOCon.InTransaction then datamod.ADOCon.RollbackTrans;
          DataTJ_flag:=false; break;
        end;
      end;
    end;    }
    adoqemp.next;
   end;// while not adoqemp.Eof do.End (统计离职人员收支表结束)
   ProgressBar1.Position:=0;
   Label_Display.Visible:=false;
   application.ProcessMessages;

  //查讯对应时间段的人员的收入信息
  with ADOQ_away_query do
  begin
    close;sql.clear;
    sql.Add('SELECT a.empid, b.empname, b.sex, c.depname, d.dutyname, SUM(a.shou)+ SUM(a.fshou) AS total,');
    sql.Add('SUM(a.zhi) AS zhi, SUM(a.shou) + SUM(a.fshou) - SUM(a.zhi) AS balance');
    sql.Add('FROM PersonShouZhi a INNER JOIN employee b ON a.empid = b.empid INNER JOIN');
    sql.Add('department c ON b.depid = c.depid INNER JOIN duty d ON b.dutyid = d.dutyid');
    sql.Add(' WHERE (b.state = 0)');
    //显示对应查询条件的记录
    case RadioGroup1.ItemIndex of
    0:
      begin
        if empid<>'' then
        begin
          sql.Add('and a.empid=:empid');
          parameters.ParamValues['empid']:=strtoint(empid);
        end;
      end;
    1:
      begin
        if empname<>'' then
        begin
          sql.Add('and b.empname=:empname');
          parameters.ParamValues['empname']:=empname;
        end;
      end;
    2:
      begin
        sql.add('and c.depname=:depname');
        parameters.ParamValues['depname']:=depname;
      end;
    3:
      begin
        sql.Add('and d.dutyname=:dutyname');
        parameters.ParamValues['dutyname']:=dutyname;
      end;
    end;
    sql.Add('GROUP BY a.empid, b.empname, b.sex, c.depname, d.dutyname');
    try
      execsql; open;
    except
      MsgErr(handle,'查询离职员工收支总账表失败!');
      exit;
    end;
    if recordcount=0 then MsgOK(handle,'当前数据表内没统计查找到数据!');
  end;
end;

procedure TfrmSysdata_manage.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=Cafree;
end;

procedure TfrmSysdata_manage.RadioGroup1Click(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
  0:
    begin
      ComboBox_awayEmpID.Visible:=true;
      ComboBox_awayEmpID.Text:='';
      combobox_dep.Visible:=false;
      combobox_duty.Visible:=false;
      edtname.Visible:=false;
    end;
  1:
    begin
      ComboBox_awayEmpID.Visible:=false;
      combobox_dep.Visible:=false;
      combobox_duty.Visible:=false;
      edtname.Visible:=true;
      edtname.Clear;
    end;
  2:
    begin
      combobox_dep.Visible:=true;
      combobox_dep.Text:='';
      ComboBox_awayEmpID.Visible:=false;
      combobox_duty.Visible:=false;
      edtname.Visible:=false;
    end;
  3:
    begin
      combobox_duty.Visible:=true;
      combobox_duty.Text:='';
      ComboBox_awayEmpID.Visible:=false;
      combobox_dep.Visible:=false;
      edtname.visible:=false;
    end;
  end;
end;

procedure TfrmSysdata_manage.ComboBox_awayEmpIDKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not ( key in ['0'..'9',chr(8),chr(13)]) then abort;
end;

procedure TfrmSysdata_manage.AllBtnClick(Sender: TObject);
var tmpstr, tmpstr2: string;
begin
  if not ADOQ_away_query.Active then exit;
  if ADOQ_away_query.RecordCount =0 then exit;
  with ADOQ_away_query do
  begin
    First;
    while not eof do
    begin
        if fieldvalues['balance']<>0 then begin next; continue; end;
        tmpstr:=trim(ADOQ_away_query.FieldValues['empname']);
        tmpstr2:=inttostr(ADOQ_away_query.FieldValues['empid']);
        if tmpstr<>ListEditor1.Values[tmpstr2] then
        ListEditor1.InsertRow(tmpstr2,tmpstr,false);
        next;
    end;
  end;
end;

procedure TfrmSysdata_manage.SigBtnClick(Sender: TObject);
var tmpstr, tmpstr2: string;
begin
  if not ADOQ_away_query.Active then exit;
  if ADOQ_away_query.RecordCount =0 then exit;
  if ADOQ_away_query.FieldValues['balance']<>0 then
  begin
    msgerr(handle,'该离职员工的工资还未结算清,操作无法进行!');
    abort; exit;
  end;
  tmpstr:=trim(ADOQ_away_query.FieldValues['empname']);
  tmpstr2:=inttostr(ADOQ_away_query.FieldValues['empid']);
  if tmpstr=ListEditor1.Values[tmpstr2] then
  begin
        msgerr(handle,'离职员工编号:'+tmpstr2+', 姓名:['+tmpstr+'] 已经存在!');
        exit;
  end;
  ListEditor1.InsertRow(tmpstr2,tmpstr,false);
end;

procedure TfrmSysdata_manage.DelSigBtnClick(Sender: TObject);
begin
  if ListEditor1.Strings.Count=0 then exit;
  if msgqst(handle,'确定删除编号:['+ListEditor1.Cells[0,ListEditor1.Row]+'], 姓名:['+ListEditor1.Cells[1,ListEditor1.Row]+']的数据码?')=idno then exit;
  ListEditor1.Strings.Delete(ListEditor1.Row-1) ;
end;

procedure TfrmSysdata_manage.DelAllBtnClick(Sender: TObject);
begin
  if ListEditor1.Strings.Count=0 then exit;
  if msgqst(handle,'确定删除当前选择的所有离职员工数据吗?')=idno then exit;
  ListEditor1.Strings.Clear;
end;

procedure TfrmSysdata_manage.SaveBtnClick(Sender: TObject);
var
  tmpstr:string;
  i, emp_num_s, emp_num_e:integer;
  tmp_id:integer;
  emp_BLflag:boolean;
  emp_all_money:real;
begin
  if ListEditor1.Strings.Count=0 then exit;
  emp_num_s:=ListEditor1.Strings.Count;
  emp_num_e:=0;
  tmpstr:='确认将当前所选择的: ['+inttostr(ListEditor1.Strings.count)+'] 位离职员工在数据库中的相关数据清除吗?';
  tmpstr:=tmpstr+#13+#13+'     注意:  清除后将 [无法还原] 该离职员工的信息!';
  if msgqst(handle,tmpstr)=idno then exit;
  ProgressBar1.Max:=ListEditor1.Strings.Count;
  ProgressBar1.Position:=0;
  Label_Display.Visible:=true;
  application.ProcessMessages;

  if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
  begin
    MsgErr(handle,'离职人员数据清除失败,请重试--ALL!');
    exit;
  end;


//需要删除的人员信息表
//delete from outbom_log----
//delete from earn_abs-------
//delete from emp_payout--------
//delete from brrow -----
//delete from personshouzhi--------
//delete from emp_pay-----------
//delete from ck_material-----
//delete from employee_Backup------------------
//delete from employee----------
  //利用循环清除离职员工数据
  for i:=1 to ListEditor1.Strings.Count do
  begin
  ProgressBar1.Position:=ProgressBar1.Position+1;
  application.ProcessMessages;
  //数据提交开始
  emp_BLflag:=true;
  datamod.ADOCon.BeginTrans;

⌨️ 快捷键说明

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