door.pas

来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 900 行 · 第 1/2 页

PAS
900
字号
    ADODataSet2.Close;
    ADODataSet2.CommandText:='Select *   from dor03010  order by dept,workno,rq ';
    ADODataSet2.Open;
  end
  else if pageControl1.ActivePageIndex=2 then  //显示日出入次数数据
  begin
    AdoDataSet4.Close;
    AdoDataSet3.close;
    AdoDataSet3.CommandText:='Select * From dor04010  order by dept,workno,rq';
    AdoDataSet4.CommandText:='Select * From dor02010 where rq=:rq and workno=:workno  order by dept,workno,rq';
    AdoDataSet3.Open;
    AdoDataSet4.Open;
    MaskEdit4.Text:='';
    MaskEdit5.Text:='';
  end;
end;
procedure TFormdoor.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_F1 then
      begin
        //showmessage('ok!')
     //MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0);
      Application.HelpFile :=Extractfilepath(application.ExeName)+ 'help\pasahelp.hlp';
      application.HelpJump('SHM_CONTENTS0041');
    end;
end;

procedure TFormdoor.ppReport1BeforePrint(Sender: TObject);
begin
  // pplabel31.caption:=companyname1;
//   pplabel32.caption:=maskedit1.text+'~'+maskedit2.text;
 //  pplabel29.caption:='制表人:'+pubworkname;
end;

procedure TFormdoor.tbnprintClick(Sender: TObject);
begin
  try
  if not assigned(doorprint) then
    doorprint:=Tdoorprint.Create(Application);
    doorprint.Showmodal;
   except
     showmessage('门禁列印出现错误!!!!!');
   end;
   
end;

procedure TFormdoor.DateTimePicker3CloseUp(Sender: TObject);
begin
   maskedit1.text:=formatdatetime('yyyy/mm/dd',datetimepicker3.date);
end;

procedure TFormdoor.DateTimePicker4CloseUp(Sender: TObject);
begin
   maskedit2.text:=formatdatetime('yyyy/mm/dd',datetimepicker4.date);
end;

procedure TFormdoor.FormCreate(Sender: TObject);
begin
if fmat='/' then
begin
 fmat1:='    /  /  ';
 fmat2:='    /  ' ;
end;
if fmat='-' then
begin
 fmat1:='    -  -  ';
 fmat2:='    -  ';
end;
   datetimepicker4.date:=now;
   datetimepicker3.date:=now;
   DateTimePicker1.Date:=now;
   DateTimePicker2.Date:=now;

   maskedit1.Text:=datetostr(date);
   maskedit2.text:=datetostr(date);
   maskEdit4.Text:=DateTostr(Date);
   MaskEdit5.Text:=DateToStr(Date);
   ADODoor.Open;
   ADODataSet2.Open;
   ADODataSet1.Open;
   ADODoor.Open;
   ADODataSet3.Open;
   ADODataSet4.Open;
/////
   combobox4.Items.Clear;
   Combobox5.items.Clear;
   Combobox6.Items.Clear;
////////////
   Combobox4.Items.Add('全部');
   Combobox5.Items.Add('全部');
   combobox6.items.Add('全部');

   Adoquery1.Close;
   Adoquery1.sql.Clear;
   Adoquery1.sql.Add('select dept from dor02010');
   Adoquery1.Open;
   Adoquery1.First;
   while not Adoquery1.eof do
   begin
     combobox4.Items.Add(Adoquery1.fieldbyname('dept').asstring);
     combobox5.Items.Add(Adoquery1.fieldbyname('dept').asstring);
     combobox6.Items.Add(Adoquery1.fieldbyname('dept').asstring);
     Adoquery1.Next;
   end;
end;
procedure TFormdoor.ToolButton6Click(Sender: TObject);
begin  //门禁日汇总
  if PageControl1.ActivePageIndex=2 then
  begin
    if (MaskEdit4.Text<>fmat1) and (MaskEdit5.Text<>fmat1) then
    begin
      panel8.Visible:=True;
      panel8.BringToFront;
      Panel8.Update;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Delete atd15010 where recdate  between'''+MaskEdit4.Text+''' and '''+MaskEdit5.Text+''' and rtrim(atd15010.macname) in (select  rtrim(clockno) from atd_mel_clock where clocklb=2)');//删除原始打卡资料
      AdoQuery1.SQL.Add('Delete dor04010 where rq between'''+MaskEdit4.Text+''' and '''+MaskEdit5.Text+'''');//删除以前处理的数据
      ADOQuery1.sql.Add('insert into  dor04010 (workno,cardno,rq,name,sexname,dept,prof,date_count) select distinct  workno ,cardno,rq,max(name),max(sexname) ,max(dept),max(prof),count(*) from dor02010  where  rq between '''+MaskEdit4.Text+''' and '''+MaskEdit5.Text+''' group by workno,cardno,rq');
      ADOQuery1.ExecSQL;
      Panel8.Visible:=False;
    end
    else
      Application.MessageBox('对不起你没有输入起始日期与结束日期,不能汇总!!!','汇总错误',48);
  end;
  if PageControl1.ActivePageIndex=1 then
  begin
    if MaskEdit3.Text=fmat2 then
    begin
      application.MessageBox('请输入要处理的月份','日期为空',mb_iconstop+mb_ok);
      exit;
    end
    else
    begin
      Panel8.Visible:=True;
      panel8.BringToFront;
      panel8.Update;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.sql.Add('update dor02010  set workno=a.workno ,name=a.name,sexname=a.sexname,dept=a.dept,prof=a.prof from  per24010  a  where  a.cardno=dor02010.cardno  and  dor02010.workno is null');
      ADOQuery1.ExecSQL;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.sql.Add('delete  from dor03010  where  rq='''+MaskEdit3.Text+''' ');
      ADOQuery1.sql.Add('insert into  dor03010 (workno,rq,num)  select distinct  workno,max(left(rq,7)) rq , count(*) num  from dor02010  where  left(rq,7)='''+MaskEdit3.Text+'''  group by workno');
      ADOQuery1.sql.Add('update  dor03010  set  cardno=a.cardno ,name=a.name,sexname=a.sexname,dept=a.dept,prof=a.prof  from per24010  a  where  a.workno=dor03010.workno');
      ADOQuery1.SQL.Add('Delete from atd15010 where left(recdate,7)='''+MaskEdit3.Text+''' and rtrim(atd15010.macname) in (select  rtrim(clockno) from atd_mel_clock where clocklb=2)');//删除原始打卡资料
      ADOQuery1.ExecSQL;
      Panel8.Visible:=False;
    end;
    ///////////////////////
    AdoDataSet3.Close;
    AdoDataSet4.Close;  //日出入记录
    AdoDataSet3.Prepared:=True;
    AdoDataSet4.Prepared:=True;
    AdoDataSet3.CommandText:='Select * From dor04010  order by dept,workno,rq';  //显示日出入汇总
    AdoDataSet4.CommandText:='Select * From dor02010 where rq=:rq and workno=:workno  order by dept,workno,rq';
    AdoDataSet3.Open;
    AdoDataSet4.Open;
    /////////显示处理後的月汇总
     AdoDataSet1.close;
     AdoDataSet2.close;
     AdoDataSet2.CommandText:='select *  from dor03010  order by dept,workno,rq';
     AdoDataSet1.CommandText:='select * from dor02010  where workno=:workno  and  left(rq,7)=:rq   order by dept,workno,rq';
     AdoDataSet2.Open;
     AdoDataSet1.Open;
    ///////////////////
     Application.messagebox('门 禁 汇 总 完 毕,谢 谢 使 用 ! ! ! !','系统提示',48);
  end;
end;
procedure TFormdoor.ppReport1PreviewFormCreate(Sender: TObject);
begin
  tppreport(sender).previewform.windowstate:=wsmaximized;
end;

procedure TFormdoor.MaskEdit2Enter(Sender: TObject);
begin    {








  if (MaskEdit1.Text<>'    /  /  ')and (MaskEdit2.Text<>'    /  /  ')and (Edit1.Text='')then
  begin
    Ado_Count.Close;
    Ado_count.CommandText:='Select workno,max(cardno) as cardno ,max(name)as name,max(sexname) as sexname,max(dept) as dept,max(prof) as prof,rq ,count(*) as num  from dor02010 where rq between'+MaskEdit1.Text+'and'+MaskEdit2.Text+ 'group by  workno,rq order by  rq,num,workno  desc';
    Ado_Count.Open;
  end
  else if(MaskEdit2.Text<>'    /  /  ')and(MaskEdit1.Text='    /  /  ')and(Edit1.Text='')then
  begin
    Ado_Count.Close;
    Ado_count.CommandText:='Select workno,max(cardno) as cardno ,max(name)  as  name,max(sexname) as sexname,max(dept) as dept,max(prof) as prof,rq ,count(*) as num  from dor02010 where rq='+MaskEdit2.Text+' group by  workno,rq order by  rq,num,workno  desc';
    Ado_Count.Open;
  end
  else
  if (MaskEdit1.Text<>'    /  /  ')and (MaskEdit2.Text<>'    /  /  ')and (Edit1.Text<>'')then
  begin
    Ado_Count.Close;
    Ado_count.CommandText:='Select workno,max(cardno) as cardno ,max(name)  as  name,max(sexname) as sexname,max(dept) as dept,max(prof) as prof,rq ,count(*),as num  from dor02010 where rq between'+MaskEdit1.Text+'and'+MaskEdit2.Text+'and cardno='+Edit1.Text+'group by  workno,rq order by  rq,num,workno  desc';
    Ado_Count.Open;
  end
  else if(MaskEdit2.Text<>'    /  /  ')and (MaskEdit1.Text='    /  /  ')and(Edit1.Text<>'')then
  begin
    Ado_Count.Close;
    Ado_count.CommandText:='Select workno,max(cardno) as cardno ,max(name)  as  name,max(sexname) as sexname,max(dept) as dept,max(prof) as prof,rq ,count(*) as num  from dor02010 where rq='+MaskEdit2.Text+' and cardno='+Edit1.Text+'group by  workno,rq order by  rq,num,workno  desc';
    Ado_Count.Open;
  end;    }
end;
procedure TFormdoor.DBGrid2TitleClick(Column: TColumn);
begin
  if f='DESC' then
     f:='ASC'
   else
     f:='DESC';
   ADODataSet2.Sort:=column.FieldName+' '+f;
end;
procedure TFormdoor.DBGrid1Enter(Sender: TObject);
begin
  //dbgrid:=1;
end;

procedure TFormdoor.DBGrid2Enter(Sender: TObject);
begin
  //dbgrid:=2;
end;

procedure TFormdoor.MaskEdit3Change(Sender: TObject);
begin
  //if MaskEdit3.Text<>''  
end;

procedure TFormdoor.MaskEdit3Exit(Sender: TObject);
begin
  if maskedit3.text<>fmat2 then
    begin 
      ADODataSet2.Close;
      ADODataSet2.CommandText:='Select * From dor03010 where rq='''+maskedit3.text+'''  order by dept,workno,rq';
      ADODataSet2.Open;
    end;
end;

procedure TFormdoor.Edit2Exit(Sender: TObject);
begin
  if (MaskEdit3.Text=fmat2) and (trim(edit2.text)<>'') then
  begin
    ADODataSet2.Close;
    ADODataSet2.CommandText:='Select * From  dor03010 where workno='''+edit2.text+''' or name='''+edit2.text+''' or dept='''+edit2.text+''' or cardno='''+Edit2.Text+''' order by dept,workno,rq';
    ADODataSet2.Prepared:=True;
    ADODataSet2.open;
  end
  else if (MaskEdit3.Text<>fmat2) and (Trim(Edit2.Text)<>'') then
  begin
    ADODataSet2.Close;
    ADODataSet2.CommandText:='Select * From  dor03010 where rq='''+MaskEdit3.Text+''' and  workno='''+edit2.text+''' or name='''+edit2.text+''' or dept='''+edit2.text+''' or cardno='''+Edit2.Text+''' order by  dept,workno,rq';
    ADODataSet2.Prepared:=True;
    ADODataSet2.open;
  end;
end;

procedure TFormdoor.DBGrid3TitleClick(Column: TColumn);
begin
  if f='DESC' THEN
    F:='ASC'
  ELSE
    F:='DESC';
  ADODataSet1.sort:=column.fieldname+' '+f;
end;

procedure TFormdoor.PageControl1Change(Sender: TObject);
begin
  case PageControl1.ActivePageIndex of
    0:
    begin
      DBNavigator1.DataSource:=Dsdoor;
      Adodoor.Open;
    end;
    1:
    begin
      DBNavigator1.DataSource:=DataSource2;
      adodataset1.Open;
      adodataset2.Open;
    end;
    2:
    begin
      DBNavigator1.DataSource:=DataSource3;
      adodataset3.Open;
      adodataset4.Open;
    end;
  end;
end;

procedure TFormdoor.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  (sender as Tpagecontrol).activepage.highlighted:=false;
end;
procedure TFormdoor.DateTimePicker1CloseUp(Sender: TObject);
begin
   maskedit4.text:=formatdatetime('yyyy/mm/dd',datetimepicker1.date);
end;

procedure TFormdoor.DateTimePicker2CloseUp(Sender: TObject);
begin
   maskedit5.text:=formatdatetime('yyyy/mm/dd',datetimepicker2.date);
end;
procedure TFormdoor.DBGrid4TitleClick(Column: TColumn);
begin
    if f='DESC' THEN
    f:='ASC'
  ELSE
    f:='DESC';
  AdoDataSet3.Sort :=column.FieldName +' '+f;
end;

procedure TFormdoor.DBGrid5TitleClick(Column: TColumn);
begin
    if f='DESC' THEN
    f:='ASC'
  ELSE
    f:='DESC';
  AdoDataSet4.Sort :=column.FieldName +' '+f;
end;

procedure TFormdoor.Edit3Exit(Sender: TObject);
begin
  if (MaskEdit4.Text<>fmat1)and (MaskEdit5.Text<>fmat1)and (Edit3.Text='')then
  begin
    AdoDataSet3.Close;
    AdoDataSet3.CommandText:='Select workno,max(cardno) as cardno ,max(name)as name,max(sexname) as sexname,max(dept) as dept,max(prof) as prof,rq ,max(date_count) as date_count  from dor04010 where rq  between '''+MaskEdit4.Text+''' and '''+MaskEdit5.Text+''' group by  workno,rq order by  rq,workno  desc';
    AdoDataSet3.Open;
  end;
  ///////////////////
  if (MaskEdit4.Text<>fmat1)and(MaskEdit5.Text<>fmat1)and(Edit3.Text<>'')then
  begin
    AdoDataSet3.Close;
    AdoDataSet3.CommandText:='Select * from dor04010 where rq  between '''+MaskEdit4.Text+''' and '''+MaskEdit5.Text+''' and (cardno='''+Edit3.Text+''' or workno='''+Edit3.Text+''' or name='''+Edit3.Text+''' or dept='''+Edit3.Text+''')  order by  rq desc';
    AdoDataSet3.Open;
  end
  else
  if (Edit3.Text<>'')and (MaskEdit4.Text=fmat1) and (MaskEdit5.Text=fmat1)then
  begin
    AdoDataSet3.Close;
    AdoDataSet3.CommandText:='Select * from dor04010 where cardno='''+Edit3.Text+''' or workno='''+Edit3.Text+''' or name='''+Edit3.Text+''' or dept='''+Edit3.Text+'''  order by dept,workno,rq';
    AdoDataSet3.open;
  end;
end;
procedure TFormdoor.ComboBox4Change(Sender: TObject);
begin
  ADOdoor.Close;
  if combobox4.Text='全部' then
    ADOdoor.CommandText:='Select * from dor02010 '
  else
    ADOdoor.CommandText:='Select * from dor02010 where dept='''+combobox4.text+'''';
  ADOdoor.Open;
end;
procedure TFormdoor.ComboBox5Change(Sender: TObject);
begin
  ADODataset2.Close;
  if combobox5.Text='全部' then
    ADODataSet2.CommandText:='select * from dor03010 '
  else
    ADODataSet2.CommandText:='select * from dor03010 where dept='''+combobox5.text+'''';
  ADODataSet2.Open;
end;

procedure TFormdoor.ComboBox6Change(Sender: TObject);
begin
  ADODataset3.Close;
  if combobox6.Text='全部' then
    ADODataset3.CommandText:='select * from dor04010 '
  else
    ADODataset3.CommandText:='select * from dor04010 where dept='''+combobox6.Text+'''';
  Adodataset3.Open;
end;

procedure TFormdoor.ToolButton1Click(Sender: TObject);
begin
  panel10.Visible:=true;
  datetimepicker5.SetFocus;
end;

procedure TFormdoor.BitBtn1Click(Sender: TObject);
begin
  panel10.Visible:=false;
  datetimepicker5.Date:=now;
  datetimepicker6.Date:=now;
end;

procedure TFormdoor.BitBtn2Click(Sender: TObject);
var i:string;
begin
  if messagedlg('注意:移除前,请确认为已无效的数据'+#13+'是否要进行移除',mtinformation,[mbyes,mbno],0)=mryes then
  begin
    Animate2.Active:=true;
    adoquery1.Close;
    adoquery1.SQL.Clear;
    label33.Caption:='正在移除资料,请稍後........';
    label33.Visible:=true;
    label33.Update;
    adoquery1.SQL.text:='exec bkdoor ''1'','''+formatdatetime('yyyy/mm/dd',DateTimePicker5.DateTime)+''','''+formatdatetime('yyyy/mm/dd',DateTimePicker6.datetime)+'''';
    try
    adoquery1.ExecSQL;
    except
      ;
    end;
    label33.Caption:='移除完毕';
    label33.Update;
    Adodoor.close;
    Adodoor.commandtext:='select * from dor02010 order by dept,workno ';
    Adodoor.Open;
    messagedlg('移除成功,谢谢使用!!!!',mtinformation,[mbok],0);
    Animate2.Active:=false;
    label33.Visible:=false;
  end;
end;

procedure TFormdoor.BitBtn3Click(Sender: TObject);
var i:string;
begin
  if messagedlg('注意:是否进行还原!!!!',mtinformation,[mbyes,mbno],0)=mryes then
  begin
    Animate2.Active:=true;
    adoquery1.Close;
    adoquery1.SQL.Clear;
    label33.Caption:='正在还原资料,请稍後........';
    label33.Visible:=true;
    label33.Update;
    adoquery1.SQL.text:='exec bkdoor ''0'','''+formatdatetime('yyyy/mm/dd',DateTimePicker5.DateTime)+''','''+formatdatetime('yyyy/mm/dd',DateTimePicker6.datetime)+'''';
    try
    adoquery1.ExecSQL;
    except
      ;
    end;
    label33.Caption:='还原完毕';
    label33.Update;
    Adodoor.close;
    Adodoor.commandtext:='select * from dor02010 order by dept,workno ';
    Adodoor.Open;
    messagedlg('还原成功,谢谢使用!!!!',mtinformation,[mbok],0);
    Animate2.Active:=false;
    label33.Visible:=false;
  end;
end;

end.

⌨️ 快捷键说明

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