📄 stoppay.pas
字号:
//停薪留职作业
unit stoppay;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, DBCtrls, Grids, DBGrids, Mask, ComCtrls,
ToolWin, ImgList, Menus,Db,Adodb;
type
Tformstoppay = class(TForm)
ImageList1: TImageList;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N3: TMenuItem;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
tbnsort: TToolButton;
tbnfind: TToolButton;
tbnprint: TToolButton;
tbnexit: TToolButton;
DBNavigator1: TDBNavigator;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
DBGrid1: TDBGrid;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBEdit10: TDBEdit;
DBEdit11: TDBEdit;
DBEdit12: TDBEdit;
DBEdit13: TDBEdit;
DBEdit14: TDBEdit;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
DateTimePicker5: TDateTimePicker;
DBComboBox1: TDBComboBox;
Splitter1: TSplitter;
DBGrid2: TDBGrid;
ADOnowstoppay: TADODataSet;
DataSource1: TDataSource;
TabSheet3: TTabSheet;
ADOstoppayed: TADODataSet;
DataSource2: TDataSource;
DBGrid3: TDBGrid;
Adostoppayid: TStringField;
ADOnowstoppaycardno: TStringField;
ADOnowstoppayname: TStringField;
ADOnowstoppaydeptno: TStringField;
ADOnowstoppayprof: TStringField;
ADOnowstoppaysdate: TDateTimeField;
ADOnowstoppayedate: TDateTimeField;
ADOnowstoppaywhy: TStringField;
ADOnowstoppaycheckman: TStringField;
ADOnowstoppaycheckdate: TDateTimeField;
ADOnowstoppaymemo: TStringField;
ADOnowstoppayoperator: TStringField;
ADOnowstoppaycdate: TDateTimeField;
ADOnowstoppayworkno: TStringField;
ADOstoppayedid: TStringField;
ADOstoppayedworkno: TStringField;
ADOstoppayedcardno: TStringField;
ADOstoppayedname: TStringField;
ADOstoppayeddeptno: TStringField;
ADOstoppayedprof: TStringField;
ADOstoppayedsdate: TDateTimeField;
ADOstoppayededate: TDateTimeField;
ADOstoppayedwhy: TStringField;
ADOstoppayedcheckman: TStringField;
ADOstoppayedcheckdate: TDateTimeField;
ADOstoppayedmemo: TStringField;
ADOstoppayedoperator: TStringField;
ADOstoppayedcdate: TDateTimeField;
Panel3: TPanel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label43: TLabel;
Edit1: TEdit;
MaskEdit1: TMaskEdit;
DateTimePicker4: TDateTimePicker;
MaskEdit2: TMaskEdit;
DateTimePicker3: TDateTimePicker;
Panel2: TPanel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Edit2: TEdit;
MaskEdit3: TMaskEdit;
DateTimePicker6: TDateTimePicker;
MaskEdit4: TMaskEdit;
DateTimePicker7: TDateTimePicker;
Panel4: TPanel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Edit3: TEdit;
MaskEdit5: TMaskEdit;
DateTimePicker8: TDateTimePicker;
MaskEdit6: TMaskEdit;
DateTimePicker9: TDateTimePicker;
ADOnowstoppaystate: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure tbnexitClick(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure tbnfindClick(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure tbnsortClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure DBEdit4Change(Sender: TObject);
procedure DBEdit2Change(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure tbnprintClick(Sender: TObject);
procedure DBGrid3TitleClick(Column: TColumn);
procedure DBGrid2TitleClick(Column: TColumn);
procedure Edit1Exit(Sender: TObject);
procedure MaskEdit2Exit(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit3Exit(Sender: TObject);
procedure MaskEdit4Exit(Sender: TObject);
procedure MaskEdit6Exit(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure DateTimePicker4CloseUp(Sender: TObject);
procedure DateTimePicker3CloseUp(Sender: TObject);
procedure DateTimePicker6CloseUp(Sender: TObject);
procedure DateTimePicker7CloseUp(Sender: TObject);
procedure DateTimePicker8CloseUp(Sender: TObject);
procedure DateTimePicker9CloseUp(Sender: TObject);
procedure DBGrid2KeyPress(Sender: TObject; var Key: Char);
procedure DBGrid2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
manyfield:boolean;
findex:array[1..5] of integer;
fsort:array[1..5] of string;
fcount:0..5;
f:string;
public
{ Public declarations }
end;
var
formstoppay: Tformstoppay;
implementation
uses datamol,publicfunction, personalreport, reportforstoppay, canfind,
main;
{$R *.DFM}
procedure Tformstoppay.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
adonowstoppay.close;
setdbgridwidth(dbgrid1,'p'+'stoppay');
action:=cafree;
formstoppay:=nil;
end;
procedure Tformstoppay.BitBtn1Click(Sender: TObject);
begin
if workistrue(datamod.Adostoppay.FieldByName('workno').asstring) then
begin
application.messagebox('工号有误!!','Warning',mb_ok+mb_iconwarning);
exit;
end;
if datamod.Adostoppay.CanModify then
datamod.adostoppay.post;
end;
procedure Tformstoppay.BitBtn4Click(Sender: TObject);
begin
close;
end;
procedure Tformstoppay.FormActivate(Sender: TObject);
begin
with datamod.adoquery2 do
begin
close;
sql.clear;
//日期满足,把该员工标识为停薪留职
sql.Add ('update per28010 set state=1 where sdate<='''+datetostr(date)+''' and edate>='''+datetostr(date)+''' and state=0 ');
//把处于停薪留职状态的人员,在人事主档里更新
sql.add('update per24010 set stoppay=1 where leave<>1 and stoppay<>1 and workno in (select workno from per28010 where state=1)');
//日期已失效,把该员工还原
sql.Add ('update per28010 set state=2 where edate<'''+datetostr(date)+''' and state=1 ');
//把人事主档停薪留职日期到的,自动取消mark
sql.add('update per24010 set stoppay=0 where leave<>1 and stoppay=1 and workno in (select workno from per28010 where state=2)');
execsql;
end;
getdbgridwidth(dbgrid1,'p'+'stoppay');
datamod.Adostoppay.Close;
datamod.Adostoppay.CursorType :=ctkeyset;
datamod.Adostoppay.LockType :=ltpessimistic;
datamod.Adostoppay.Open;
adonowstoppay.close;
adonowstoppay.Open;
end;
procedure Tformstoppay.ToolButton2Click(Sender: TObject);
begin
{ if workistrue(datamod.Adostoppay.FieldByName('workno').asstring) then
begin
exit;
end;
if datamod.Adostoppay.CanModify then
datamod.adostoppay.post;}
end;
procedure Tformstoppay.tbnexitClick(Sender: TObject);
begin
close;
end;
procedure Tformstoppay.ToolButton6Click(Sender: TObject);
begin
datamod.Adostoppay.CancelUpdates;
end;
procedure Tformstoppay.tbnfindClick(Sender: TObject);
begin
if assigned(formcanfind) then formcanfind.close;
case pagecontrol1.ActivePageIndex of
0:findrecorder(datamod.adostoppay,'Adostoppay','per28010'); //调用publicfuction中的查询功能
1:findrecorder(ADOnowstoppay,'Adonowstoppay','per28010');
2:findrecorder(ADOstoppayed,'Adostoppayed','per28010');
end;
end;
procedure Tformstoppay.DBGrid1TitleClick(Column: TColumn);
begin
if f='DESC' then
f:='ASC'
else
f:='DESC';
datamod.ADOstoppay.Sort :=column.FieldName+' '+f;
end;
procedure Tformstoppay.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 Tformstoppay.N1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid1.SelectedIndex =findex[i] then
begin
fsort[i]:='ASC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid1.selectedindex;
fsort[fcount]:='ASC';
dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
end;
end;
procedure Tformstoppay.N2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid1.SelectedIndex =findex[i] then
begin
fsort[i]:='DESC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid1.selectedindex;
fsort[fcount]:='DESC';
dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
end;
end;
procedure Tformstoppay.N4Click(Sender: TObject);
var i:1..5;
sortexp:string;
begin
sortexp:='';
for i:=1 to fcount do
begin
if dbgrid1.Columns[findex[i]].Color=clgray then
begin
sortexp :=sortexp+dbgrid1.Columns[findex[i]].FieldName+' '+fsort[i];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -