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

📄 unit_attendmanager.pas

📁 用delphi开发的美容院管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
end;

procedure Tfrm_attendmanager.sbtn_editClick(Sender: TObject);
begin
  if pagecontrol1.ActivePage = sht_Normal then
  begin
    if sg_Normal.RowCount =2 then exit;
    sg_Normal.Options :=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goColSizing,goEditing];
    sbtn_edit.Enabled :=false;
    sbtn_save.Enabled :=true;
    sbtn_delete.Enabled := false;
  end else
  begin
    if sg_Special.rowcount =2 then exit;
    sg_Special.Options :=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goColSizing,goEditing];
    sbtn_edit.Enabled :=false;
    sbtn_save.Enabled :=true;
    sbtn_delete.Enabled := false;
  end;
end;

procedure Tfrm_attendmanager.sbtn_saveClick(Sender: TObject);
var
  i:integer;
  temp_date,temp_SQL,pre_morning,pre_afternoon,pre_evening,aft_morning,aft_afternoon,aft_evening:string;
begin
  if pagecontrol1.ActivePage = sht_Normal then
  begin
  dmod.Database.StartTransaction ;
  try
    for i:=1 to sg_Normal.RowCount -2 do
    begin
      temp_date:= sg_Normal.cells[0,i];
      pre_morning:=sg_Normal.cells[1,i];
      aft_morning:=sg_Normal.cells[2,i];
      pre_afternoon:=sg_Normal.cells[3,i];
      aft_afternoon:=sg_Normal.cells[4,i];
      pre_evening:=sg_Normal.cells[5,i];
      aft_evening:=sg_Normal.cells[6,i];

      with dmod.qrydata do
      begin
        close;
        temp_SQL :='update normalattend set ';
        if pre_morning  <>'' then temp_SQL := temp_SQL +'pre_morning='+#39+temp_date+' '+pre_morning+#39;

        if pre_morning  <>'' then
        begin
          if aft_morning  <>'' then
             temp_SQL := temp_SQL +',aft_morning='+#39+temp_date  +' ' +aft_morning+#39;
        end else
        begin
          if aft_morning  <>'' then
             temp_SQL := temp_SQL +'aft_morning='+#39+temp_date  +' ' +aft_morning+#39;
        end;

        if aft_morning <>'' then
        begin
          if pre_afternoon<>'' then
             temp_SQL := temp_SQL +',pre_afternoon='+#39+temp_date+' ' +pre_afternoon+#39; 
        end else
        begin
          if pre_afternoon<>'' then
             temp_SQL := temp_SQL +'pre_afternoon='+#39+temp_date+' ' +pre_afternoon+#39;
        end;

        if pre_afternoon<>'' then
        begin
          if aft_afternoon<>'' then
            temp_SQL := temp_SQL +',aft_afternoon='+#39+temp_date+' ' +aft_afternoon+#39;
        end else
        begin
          if aft_afternoon<>'' then
            temp_SQL := temp_SQL +'aft_afternoon='+#39+temp_date+' ' +aft_afternoon+#39;
        end;

        if aft_afternoon<>'' then
        begin
          if pre_evening  <>'' then
            temp_SQL := temp_SQL +',pre_evening='+#39+temp_date  +' ' +pre_evening+#39;
        end else
        begin
          if pre_evening  <>'' then
            temp_SQL := temp_SQL +'pre_evening='+#39+temp_date  +' ' +pre_evening+#39;
        end;

        if pre_evening <>'' then
        begin
          if aft_evening  <>'' then
             temp_SQL := temp_SQL +',aft_evening='+#39+temp_date  +' ' +aft_evening+#39;
        end else
        begin
          if aft_evening  <>'' then
             temp_SQL := temp_SQL +'aft_evening='+#39+temp_date  +' ' +aft_evening+#39 ;
        end;
             
        temp_SQL := temp_SQL +' where emp_no='+#39+trim(edt_Empno.text)+#39+' and att_date='+#39+temp_date+#39;

        SQL.Text := temp_SQL;
        ExecSQL;
      end;
    end;
  finally
    try
      dmod.Database.Commit ;
      MessageBox(handle,'数据保存成功!','提示',mb_ok+mb_iconinformation);
      sg_Normal.Options :=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goColSizing,goRowSelect];
      sbtn_save.Enabled :=false;
      sbtn_edit.Enabled :=true;
      sbtn_delete.Enabled :=true;
    except
      dmod.Database.Rollback ;
      MessageBox(handle,'数据保存失败,请重试!','提示',mb_ok+mb_iconinformation);
    end;
  end;//开始进行特殊考勤的保存
  end else begin
    try
      dmod.Database.StartTransaction ;
      with dmod.qrydata do
      begin
        close;
        SQL.Text :='delete from specialattend where emp_no='+#39+trim(edt_empno.Text)+#39+
                   ' and att_date between'+#39+DateToStr(dtp_datestart.Date)+#39+
                   ' and '+#39+DateToStr(dtp_dateend.Date)+#39;
        ExecSQL;

        for i:=1 to sg_Special.Rowcount-2 do
        begin
          Close;
          SQL.Text :='insert into SpecialAttend(emp_no,emp_name,att_date,time_start,time_end,reason_id) values('+
               ':empno,:empname,:attdate,:timestart,:timeend,:reasonid)';
          ParamByName('empno').Asstring:=trim(edt_Empno.Text);
          ParamByName('empname').Asstring:=trim(edt_Empname.Text);
          ParamByName('attdate').AsDate:= StrToDate(sg_Special.cells[0,i]);
          ParamByName('timestart').AsDateTime :=StrToDateTime(sg_Special.cells[0,i]+' '+sg_Special.cells[3,i]) ;
          ParamByName('timeend').asDateTime :=StrToDateTime(sg_Special.cells[0,i]+' '+sg_Special.cells[4,i]);
          ParamByName('reasonid').Asstring:=sg_Special.cells[1,i];
          ExecSQL;
        end;
      end;
    finally
      try
        dmod.Database.Commit ;
        MessageBox(handle,'数据保存成功!','提示',mb_ok+mb_iconinformation);
        sg_Normal.Options :=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goColSizing,goRowSelect];
        sbtn_save.Enabled :=false;
        sbtn_edit.Enabled :=true;
        sbtn_delete.Enabled :=true;
      except
        dmod.Database.Rollback ;
        MessageBox(handle,'数据保存失败,请重试!','提示',mb_ok+mb_iconinformation);
      end;
    end;
  end;
end;

procedure Tfrm_attendmanager.sbtn_deleteClick(Sender: TObject);
begin
  if pagecontrol1.ActivePage = sht_Normal then
  begin
    if MessageBox(handle,'你确定删除该员工正常考勤记录吗?','询问',mb_yesno+mb_iconquestion)=IDYES then
    begin
      if sg_Normal.Cells[0,sg_Normal.Row]='' then exit;
    
      with dmod.qrydata do
      begin
        close;
        SQL.Text :='delete from normalattend where emp_no='+#39+trim(edt_Empno.Text)+#39+
                 ' and att_date='+#39+sg_Normal.Cells[0,sg_Normal.Row]+#39;
        ExecSQL;
      end;
      StringGridDelete(sg_Normal,sg_Normal.Row);
      if sg_Normal.Row = sg_Normal.RowCount - 1 then
      begin
        if sg_Normal.RowCount > 2 then
          sg_Normal.Row := sg_Normal.Row - 1
        else
          sbtn_back.Enabled := false;
      end;
      if sg_Normal.Row = 1 then sbtn_front.Enabled := false;
      if sg_Normal.Row = sg_Normal.RowCount - 2 then sbtn_back.Enabled := false;
    end;
  end else begin
    if MessageBox(handle,'你确定删除该员工特殊考勤记录吗?','询问',mb_yesno+mb_iconquestion)=IDYES then
    begin
      if sg_Special.Cells[0,sg_Special.Row]='' then exit;
    
      with dmod.qrydata do
      begin
        close;
        SQL.Text :='delete from specialattend where emp_no='+#39+trim(edt_Empno.Text)+#39+
                 ' and att_date='+#39+sg_Special.Cells[0,sg_Special.Row]+#39+
                 ' and reason_id='+#39+sg_Special.Cells[1,sg_Special.row]+#39;
        ExecSQL;
      end;
      StringGridDelete(sg_Special,sg_Special.Row);
      if sg_Special.Row = sg_Special.RowCount - 1 then
      begin
        if sg_Special.RowCount > 2 then
          sg_Special.Row := sg_Special.Row - 1
        else
          sbtn_back.Enabled := false;
      end;
      if sg_Special.Row = 1 then sbtn_front.Enabled := false;
      if sg_Special.Row = sg_Special.RowCount - 2 then sbtn_back.Enabled := false;
    end;
  end;
end;

procedure Tfrm_attendmanager.edt_EmpnoExit(Sender: TObject);
begin
  with dmod.qrydata do
  begin
    Close;
    SQL.Text :='select emp_name from employee where emp_no='+#39+trim(edt_Empno.Text)+#39;
    Open;
    if not eof then
      edt_empname.Text := FieldByName('emp_name').AsString 
    else begin
      MessageBox(self.handle,'该员工编号不存在,请重试!','提示',mb_ok+mb_iconinformation);
      edt_empno.SetFocus ;
    end;
  end;
end;

procedure Tfrm_attendmanager.sbtn_backClick(Sender: TObject);
begin
  if pagecontrol1.ActivePage = sht_Normal then
  begin
    if sg_Normal.Row > sg_Normal.RowCount-2 then
    begin
      sbtn_back.Enabled := false;
      exit;
    end;
    sbtn_front.Enabled := true;
    sg_Normal.Row := sg_Normal.Row+1;
  end else begin
    if sg_Special.Row > sg_Special.RowCount-2 then
    begin
      sbtn_back.Enabled := false;
      exit;
    end;
    sbtn_front.Enabled := true;
    sg_Special.Row := sg_Special.Row+1;
  end;
end;

procedure Tfrm_attendmanager.sbtn_frontClick(Sender: TObject);
begin
  if pagecontrol1.ActivePage = sht_Normal then
  begin
    if sg_Normal.Row=1 then
    begin
      sbtn_front.Enabled := false;
      exit;
    end;

    sbtn_back.Enabled := true;
    sg_Normal.Row := sg_Normal.Row-1;
  end else begin
    if sg_Special.Row=1 then
    begin
      sbtn_front.Enabled := false;
      exit;
    end;

    sbtn_back.Enabled := true;
    sg_Special.Row := sg_Special.Row-1;
  end;
end;

procedure Tfrm_attendmanager.N1Click(Sender: TObject);
begin
  DoSelectReason;
end;

procedure Tfrm_attendmanager.sg_SpecialMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if sg_Special.cells[0,sg_Special.Row]='' then exit;
  if button=mbright then
     popupmenu1.Popup(X,Y+150); 
end;

end.

⌨️ 快捷键说明

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