📄 formperson.pas
字号:
begin
db:=TDBGrid.create(self);
if dbgrid=1 then
db:=dbgrid1;
for i:=1 to fcount do
if db.SelectedIndex =findex[i] then
begin
fsort[i]:='ASC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=db.selectedindex;
fsort[fcount]:='ASC';
db.Columns[db.selectedindex].Color :=clgray;
end;
end;
procedure Tformpeople.tbnsortClick(Sender: TObject);
var i:1..5;
begin
if manyfield then
begin
manyfield:=false;
tbnsort.hint:='设定多字段排序';
popupmenu1.Items[0].Enabled :=false;
popupmenu1.Items[1].Enabled :=false;
popupmenu1.Items[2].Enabled :=false;
popupmenu1.Items[3].Enabled :=false;
end
else begin
manyfield:=true;
tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
f:='';
popupmenu1.Items[0].Enabled :=true;
popupmenu1.Items[1].Enabled :=true;
popupmenu1.Items[2].Enabled :=true;
popupmenu1.Items[3].Enabled :=true;
fcount:=0;
for i:=1 to 5 do
begin
findex[i]:=0;
fsort[i]:='';
end;
end;
end;
procedure Tformpeople.N2Click(Sender: TObject);
var i:integer;
db:Tdbgrid;
begin
if dbgrid=1 then
db:=dbgrid1
// else if dbgrid=2 then
// db:=dbgrid2
else
exit;
for i:=1 to fcount do
if db.SelectedIndex =findex[i] then
begin
fsort[i]:='DESC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=db.selectedindex;
fsort[fcount]:='DESC';
db.Columns[db.selectedindex].Color :=clgray;
end;
end;
procedure Tformpeople.N4Click(Sender: TObject);
var i:1..5;
db:Tdbgrid;
begin
if dbgrid=1 then
db:=dbgrid1
// else if dbgrid=2 then
// db:=dbgrid2
else
exit;
datamod.ADOpersonal.Sort:='';
for i:=1 to fcount do
begin
if db.Columns[findex[i]].Color=clgray then
begin
datamod.ADOpersonal.Sort :=datamod.ADOpersonal.Sort+db.Columns[findex[i]].FieldName+' '+fsort[i];
if i<fcount then datamod.ADOpersonal.Sort:=datamod.ADOpersonal.Sort+',';
end;
end;
end;
procedure Tformpeople.N3Click(Sender: TObject);
var i:1..5;
begin
for i:=1 to fcount do
begin
dbgrid1.Columns[findex[i]].Color :=clwindow;
// dbgrid2.Columns[findex[i]].Color :=clwindow;
end;
fcount:=0;
end;
procedure Tformpeople.DBGrid1Enter(Sender: TObject);
begin
dbgrid:=1;
end;
procedure Tformpeople.DBGrid2Enter(Sender: TObject);
begin
dbgrid:=2;
end;
procedure Tformpeople.DBGrid1Exit(Sender: TObject);
begin
dbgrid:=0;
end;
procedure Tformpeople.DBGrid2Exit(Sender: TObject);
begin
dbgrid:=0;
end;
procedure Tformpeople.EditworknoExit(Sender: TObject);
begin
if trim(EDitworkno.Text)='' then
exit;
if datamod.ADOpersonal.Locate('workno',editworkno.text,[]) then
begin
Editname.text:=datamod.ADOpersonal.fieldbyname('name').asstring;
edit1.Text:=datamod.ADOpersonal.fieldbyname('cardno').asstring;
end
else
Application.messagebox('没有该员工','Warning',mb_ok+mb_iconwarning);
end;
procedure Tformpeople.EditnameExit(Sender: TObject);
begin
if trim(Editname.Text)='' then
exit;
if datamod.ADOpersonal.Locate('name',Editname.text,[]) then
Editworkno.text:=datamod.ADOpersonal.fieldbyname('workno').asstring
else
Application.messagebox('没有该员工','提示',mb_ok+mb_iconinformation);
end;
procedure Tformpeople.PageControl1Change(Sender: TObject);
begin
// (sender as Tpagecontrol).activepage.highlighted:=true;
end;
procedure Tformpeople.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
(sender as Tpagecontrol).activepage.highlighted:=false;
end;
procedure Tformpeople.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_F1 then
begin
Application.HelpFile :=Extractfilepath(application.ExeName)+ 'help\pasahelp.hlp';
application.HelpJump('SHM_contents0009');
end;
end;
procedure Tformpeople.Edit1Exit(Sender: TObject);
begin
if trim(EDit1.Text)='' then
exit;
if datamod.ADOpersonal.Locate('cardno',edit1.text,[]) then
begin
Editname.text:=datamod.ADOpersonal.fieldbyname('name').asstring;
editworkno.Text:=datamod.ADOpersonal.fieldbyname('workno').asstring;
end
else
Application.messagebox('没有该员工','Warning',mb_ok+mb_iconwarning);
end;
procedure Tformpeople.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (datamod.adopersonal.FieldByName('try').AsBoolean) then
dbgrid1.Canvas.Font.Color :=clRed; //试用期人员为红色
if datamod.adopersonal.FieldByName('stoppay').asboolean then
dbgrid1.Canvas.Font.Color :=clblue; //停薪留职为蓝色
dbgrid1.DefaultDrawColumnCell(Rect,Datacol,column,state);
end;
procedure Tformpeople.ToolButton5Click(Sender: TObject);
begin
ShellExecute(handle,'open',pchar(extractfilepath(application.exename)+'data\sysmsg.log'),nil,nil,SW_SHOW)
end;
procedure Tformpeople.clearClick(Sender: TObject);
begin
if application.messagebox('你确定要将已离职人员的资料彻底删除吗?请在删除前进行离职人员的薪资核算。','重要提示',mb_okcancel+mb_iconinformation)=idok then
begin
try
with datamod do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('Insert into atdmasterbk Select a.*,''正常'' from atd25010 a left join per24010 b on a.workno=b.workno where b.leave=1 and b.workno in '+
'(select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('Delete from atd25010 from per24010 b where atd25010.workno=b.workno and b.leave=1 and b.workno in '+
'(select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('Insert into atdmasterbk Select a.*,''轮班'' from atd28010 a left join per24010 b on a.workno=b.workno where b.leave=1 and b.workno in '+
'(select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('Delete from atd28010 from per24010 b where atd28010.workno=b.workno and b.leave=1 and b.workno in '+
'(select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('Insert into atdmasterbk Select a.*,''换班'' from atd29010 a left join per24010 b on a.workno=b.workno where b.leave=1 and b.workno in '+
'(select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('Delete from atd29010 from per24010 b where atd29010.workno=b.workno and b.leave=1 and b.workno in '+
'(select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('delete from per24010 where leave=1 and workno in (select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('Insert into atd15010bk (macname,cardno,recdate,rectime,state,deldate,recdatetime,readok)'+
' Select a.macname,a.cardno,a.recdate,a.rectime,a.state,a.deldate,a.recdatetime,a.readok from atd15010 a '+
' left join per24010 b on a.cardno=b.cardno where a.readok=1 and b.leave=1 and b.workno in (select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.add('Delete from atd15010 from per24010 b where atd15010.cardno=b.cardno and b.leave=1 and b.workno in '+
'(select workno from per15010 where agreedate<='''+datetostr(date)+''') ');
adoquery1.sql.savetofile('c:\zuanleave.sql');
adoquery1.execsql;
end;
application.messagebox('已成功将离职人员资料清除,要查看请进入<离职人员资料>中,'+#13#10+'现在你可以将离职人员的卡片给其它人用了.','齐协提示',mb_ok+mb_iconinformation);
except
application.messagebox('将离职人员资料清除失败,请重试','齐协提示',mb_ok+mb_iconinformation);
end;
end;
end;
procedure Tformpeople.ToolButton1Click(Sender: TObject);
begin
formcreate(Sender);
end;
procedure Tformpeople.ToolButton2Click(Sender: TObject);
begin
// inherited;
if not assigned(Formmulchange) then
Formmulchange:=TFormmulchange.create(self);
Formmulchange.show;
end;
procedure Tformpeople.PageControl2Changing(Sender: TObject;
var AllowChange: Boolean);
begin
(Sender as TPageControl).ActivePage.highlighted:=false;
end;
procedure Tformpeople.PageControl3Change(Sender: TObject);
begin
fcDBTreeView1DblClick(fcDBTreeView1,fcdbtreeview1.ActiveNode,mbleft,[ssLeft,ssDouble],10,
10);
end;
procedure Tformpeople.fcDBTreeView1DblClick(TreeView: TfcDBCustomTreeView;
Node: TfcDBTreeNode; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
if node.DataSet.Name='ADOdepta' then
exit;
adokaoqin.Close;
adokaoqin.CommandText:='select workno,max(cardno) cardno,max(name) name,max(dept) dept,max(prof) prof,left(monthy,4) years,sum(isnull(musthours,0)) musthours,sum(isnull(facthours,0)) facthours,sum(isnull(factday,0)) factday,'+
'sum(isnull(late,0)) late,sum(isnull(latetimes,0)) latetimes,sum(isnull(early,0)) early,sum(isnull(earlytimes,0)) earlytimes,sum(isnull(kuanggong,0)) kuanggong,sum(isnull(kuanggongtimes,0)) kuanggongtimes,'+
'sum(isnull(kuanggongl,0)) kuanggongL,sum(isnull(kuanggongtimesl,0)) kuanggongtimesL,sum(isnull(leavehave,0)) leavehave,sum(isnull(leavenohave,0)) leavenohave,sum(isnull(mustot,0)) mustot,'+
'sum(isnull(otpingshi,0)) otpingshi,sum(isnull(late,0)) otjieri,sum(isnull(otjiari,0)) otjiari,sum(isnull(lateot,0)) lateOt,sum(isnull(latetimesot,0)) latetimesOt,sum(isnull(earlyot,0)) earlyOt,'+
'sum(isnull(earlytimesot,0)) earlytimesOt,sum(isnull(kuanggongot,0)) kuanggongOt,sum(isnull(kuanggongtimesot,0)) kuanggongtimesOt,sum(isnull(kuanggongotl,0)) kuanggongOtL,sum(isnull(kuanggongtimesOtL,0)) '+
'kuanggongtimesOtL,sum(isnull(leavehaveot,0)) leavehaveOt,sum(isnull(leavenohaveot,0)) leavenohaveOt,sum(isnull(qiankatimes,0)) qiankatimes,sum(isnull(kuanggonge,0)) kuanggonge,sum(isnull(kuanggongtimese,0)) '+
'kuanggongtimese,sum(isnull(kuanggongote,0)) kuanggongote,sum(isnull(kuanggongtimesote,0)) kuanggongtimesote from atd34010 where workno='''+node.DataSet.FieldByName('workno').asstring+''' group by workno,left(monthy,4)';
adokaoqin.Open;
adojianchen.Close;
adojianchen.CommandText:='select workno,min(name) name,min(prof) prof,case when jckind=0 then ''奖历'' else ''处罚'' end jc,left(convert(varchar,jcdate,111),4) years,sum(isnull(jctimes,0)) '+
'jctimes,sum(isnull(jcmoney,0)) jcmoney From per17010 where workno='''+node.DataSet.FieldByName('workno').asstring+''' group by workno,jckind,left(convert(varchar,jcdate,111),4) ';
adojianchen.Open;
adotiaoxing.Close;
adotiaoxing.CommandText:='select * From per27012 where workno='''+node.DataSet.FieldByName('workno').asstring+''' order by checkdate ';
adotiaoxing.Open;
adosjzdiao.Close;
adosjzdiao.CommandText:='select workno,cardno,name,sexname,dept,prof,ldept,lprof,usefuldate,case when movekind=0 then ''提升'' else ''降职''end movek,cdate,operator From per21010 where workno='''+node.DataSet.FieldByName('workno').asstring+''' order by usefuldate ';
adosjzdiao.Open;
adojiaoyu.Close;
adojiaoyu.CommandText:='select rq,workno,cardno,name,dept,course,result,case when pass=1 then ''通过'' else ''不合格'' end pa From edu08010 where workno='''+node.DataSet.FieldByName('workno').asstring+''' order by rq ';
adojiaoyu.Open;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -