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 + -
显示快捷键?