frm_k_jbdjpas.pas
来自「是一个用delphi设计的考勤系统」· PAS 代码 · 共 391 行
PAS
391 行
unit Frm_K_JbdjPas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ModalForm, Menus, StdCtrls, ExtCtrls, DB, DBTables, ComCtrls,
Buttons, Grids, DBGrids, YLabelButton, ChangeImage, ADODB, ImgList,
UErrDisplay, ModalForm1;
type
TFrm_K_Jbdj = class(TMyModalForm1)
TV: TTreeView;
DBGrid1: TDBGrid;
searchbox: TPanel;
Panel5: TPanel;
Label13: TLabel;
Label14: TLabel;
chk1: TCheckBox;
fyhbh: TEdit;
GroupBox3: TGroupBox;
Label15: TLabel;
dtp1: TDateTimePicker;
dtp2: TDateTimePicker;
GroupBox2: TGroupBox;
Label16: TLabel;
chk5: TCheckBox;
dtp3: TDateTimePicker;
dtp4: TDateTimePicker;
chk4: TCheckBox;
chk2: TCheckBox;
fyhxm: TEdit;
cmd: TPanel;
Label6: TLabel;
Label7: TLabel;
Label11: TLabel;
Label10: TLabel;
Label12: TLabel;
yhbh: TEdit;
ksrq: TDateTimePicker;
kssj: TDateTimePicker;
Edit1: TEdit;
jsrq: TDateTimePicker;
jssj: TDateTimePicker;
Rg1: TRadioButton;
Rg2: TRadioButton;
bmmc: TEdit;
D5_jbjl: TDataSource;
Dyhxx: TDataSource;
BtnOk: TChangeImg;
LBtnOk: TLabelB;
BtnExit: TChangeImg;
LBtnExit: TLabelB;
qryjbjl: TADOQuery;
Qyhxx: TADOQuery;
pkq_A_jbjl: TADOStoredProc;
qryjbjlyhbh: TStringField;
qryjbjljbksrq: TStringField;
qryjbjljbkssj: TStringField;
qryjbjljbjzrq: TStringField;
qryjbjljbjzsj: TStringField;
qryjbjljbyy: TStringField;
qryjbjlyhxm: TStringField;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure yhbhKeyPress(Sender: TObject; var Key: Char);
procedure BtnOkClick(Sender: TObject);
procedure BtnExitClick(Sender: TObject);
procedure ChangeImg1Click(Sender: TObject);
procedure TVClick(Sender: TObject);
procedure ksrqKeyPress(Sender: TObject; var Key: Char);
procedure kssjKeyPress(Sender: TObject; var Key: Char);
procedure jssjKeyPress(Sender: TObject; var Key: Char);
procedure jsrqKeyPress(Sender: TObject; var Key: Char);
procedure yhbhEnter(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frm_K_Jbdj: TFrm_K_Jbdj;
implementation
uses DM_DataModal, UGlobal;
{$R *.dfm}
procedure TFrm_K_Jbdj.FormCreate(Sender: TObject);
begin
inherited;
gtKqgl.LoadOrganTree(WindData.AdoConn, TV, 4);
ksrq.date := date;
jsrq.date := date;
dtp1.date := date;
dtp2.date := date;
dtp3.date := date;
dtp4.date := date;
kssj.Time := time;
jssj.Time := time;
end;
procedure TFrm_K_Jbdj.yhbhKeyPress(Sender: TObject; var Key: Char);
var
sqltxt: string;
retmsg: string;
arr: array[0..0] of string[50];
begin
inherited;
if key = #13 then
begin
if (yhbh.text = '') then exit;
if gtKqgl.ExistsUser(trim(yhbh.text), retmsg) <> 0 then
begin
application.MessageBox(PChar(retmsg), '信息提示', mb_ok + mb_IconInformation);
yhbh.SetFocus;
exit;
end
else
ksrq.Setfocus;
end;
end;
procedure TFrm_K_Jbdj.BtnOkClick(Sender: TObject);
var
filterStr: string;
begin
inherited;
filterStr := 'select * from vkq_jbjl where 2>1';
if chk1.Checked then
filterStr := filterStr + ' and yhbh=''' + fyhbh.Text + '''';
if chk2.Checked then
filterStr := filterStr + ' and yhxm=''' + fyhxm.Text + '''';
if chk4.Checked then
begin
if dtp1.DateTime > dtp2.DateTime then
begin
application.MessageBox('时间顺序设置出错,请重设!', '信息提示', mb_YesNo + mb_iconInformation);
dtp1.SetFocus;
exit;
end;
filterStr := filterStr + ' and jbksrq>=''' + datetostr(dtp1.date) + '''';
filterStr := filterStr + ' and jbksrq<=''' + datetostr(dtp2.date) + '''';
end;
if chk5.Checked then
begin
if dtp3.DateTime > dtp4.DateTime then
begin
application.MessageBox('时间顺序设置出错,请重设!', '信息提示', mb_ok + mb_iconInformation);
dtp3.SetFocus;
exit;
end;
filterStr := filterStr + ' and jbjzrq>=''' + datetostr(dtp3.date) + '''';
filterStr := filterStr + ' and jbjzrq<=''' + datetostr(dtp4.date) + '''';
end;
with qryjbjl do
begin
sql.Clear;
sql.Add(filterStr);
open;
if Recordcount <= 0 then
begin
application.MessageBox('没有此类记录', '信息提示', mb_ok + mb_iconInformation);
exit;
end;
end;
SearchBox.Visible := false;
cmd.Enabled := true;
end;
procedure TFrm_K_Jbdj.BtnExitClick(Sender: TObject);
begin
inherited;
SearchBox.Visible := false;
Cmd.Enabled := true;
end;
procedure TFrm_K_Jbdj.ChangeImg1Click(Sender: TObject);
begin
inherited;
with Qyhxx do
begin
if Recordcount = 0 then exit;
yhbh.text := fieldbyname('yhbh').asstring;
end;
end;
procedure TFrm_K_Jbdj.TVClick(Sender: TObject);
begin
inherited;
rg1.Checked := true;
try
if tv.Selected.Level = 1 then bmmc.text := TV.Selected.Text;
rg1.checked := true;
except
end;
end;
procedure TFrm_K_Jbdj.ksrqKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then kssj.Setfocus;
end;
procedure TFrm_K_Jbdj.kssjKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then jsrq.Setfocus;
end;
procedure TFrm_K_Jbdj.jssjKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then Edit1.Setfocus;
end;
procedure TFrm_K_Jbdj.jsrqKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then jssj.Setfocus;
end;
procedure TFrm_K_Jbdj.yhbhEnter(Sender: TObject);
begin
inherited;
rg2.Checked := true;
end;
procedure TFrm_K_Jbdj.N5Click(Sender: TObject);
begin
Sender:=yhbh;
inherited;
end;
procedure TFrm_K_Jbdj.BitBtn1Click(Sender: TObject);
var
retmsg: string;
sqltxt: string;
arr: array[0..1] of string[50];
cs, csz: string; //a为机构,b为分机构,c为部门,d为个人考勤
NodeValue, mesg: string; //节点关联的数值
cxbmtjoskeyvalue:string;//查询部门条件值
begin
inherited;
// 个人加班处理
if Rg2.Checked then
begin
if yhbh.text = '' then
begin
application.MessageBox('请输入用户!', '信息提示', mb_ok + mb_IconInformation);
yhbh.setfocus;
exit;
end;
if gtKqgl.ExistsUser(trim(yhbh.text), retmsg) <> 0 then
begin
application.MessageBox(PChar(retmsg), '信息提示', mb_ok + mb_IconInformation);
yhbh.SetFocus;
exit;
end;
cs := 'e';
csz := trim(yhbh.text);
cxbmtjoskeyvalue:=trim(yhbh.text)
end;
//集体缺勤处理
if Rg1.checked then
begin
try
NodeValue := ptTreeNode(TV.Selected.data)^.nodeValue;
except
application.MessageBox('请选择部门!', '信息提示', mb_ok + mb_IconInformation);
exit;
end;
cs := copy(NodeValue, 1, 1);
csz := copy(NodeValue, 2, length(NodeValue) - 1);
cs:='d';
mesg := '请确认您选的部门:';
cxbmtjoskeyvalue:=TV.Selected.text;
if application.MessageBox(pchar(mesg + TV.Selected.text),
'信息提示', mb_YesNo + mb_IconQuestion) = IdNo then exit;
end;
if ksrq.Date > jsrq.Date then
begin
application.MessageBox('开始日期不能大于结束日期!', '信息提示', mb_ok + mb_IconInformation);
ksrq.SetFocus;
exit;
end;
//
if gtKqgl.cxbmtjoskey(cs,cxbmtjoskeyvalue, retmsg) <> 0 then
begin
application.MessageBox(PChar('您无权帮'+retmsg+'用户加班登记'), '信息提示', mb_ok + mb_IconInformation);
exit;
end;
with pkq_A_jbjl do
begin
close;
Parameters.ParamByName('@cs').Value := cs;
Parameters.ParamByName('@csz').Value := csz;
Parameters.ParamByName('@ksrq').Value := datetostr(ksrq.date);
if length(timetostr(kssj.Time)) < 8 then
Parameters.ParamByName('@kssj').Value := '0' + timetostr(kssj.time)
else
Parameters.ParamByName('@kssj').Value := timetostr(kssj.time);
Parameters.ParamByName('@jsrq').Value := datetostr(jsrq.date);
if length(timetostr(jssj.Time)) < 8 then
Parameters.ParamByName('@jssj').Value := '0' + timetostr(jssj.time)
else
Parameters.ParamByName('@jssj').Value := timetostr(jssj.time);
Parameters.ParamByName('@jbyy').Value := trim(edit1.text);
try
execproc;
except
application.MessageBox('执行存储过程pkq_A_jbjl出错!', '信息提示', mb_ok + mb_IconInformation);
end;
with qryjbjl do
begin
sql.Clear;
sql.Add('select * from vkq_jbjl where yhbh=''' + csz+''''
+ ' and jbksrq='''+datetostr(ksrq.date)+''''
+ ' and jbjzrq='''+datetostr(jsrq.Date)+'''');
open;
end;
end;
yhbh.Clear;
end;
procedure TFrm_K_Jbdj.BitBtn3Click(Sender: TObject);
var
sSql: string;
retmsg:string;
begin
inherited;
with qryjbjl do
begin
if not eof then
begin
if gtKqgl.cxbmtjoskey('e',fieldbyname('yhbh').asstring, retmsg) <> 0 then
begin
application.MessageBox(PChar('您无权删除'+retmsg+'用户加班记录'), '信息提示', mb_ok + mb_IconInformation);
exit;
end;
ssql := '是否删除此加班记录:' + #13 + ' 用户编号:' + fieldbyname('yhbh').asstring;
ssql := ssql + #13 + ' 用户姓名:' + fieldbyname('yhxm').asstring;
ssql := ssql + #13 + ' 开始日期:' + fieldbyname('jbksrq').asstring + ' ';
ssql := ssql + #13 + ' 结束日期:' + fieldbyname('jbjzrq').asstring;
if (application.MessageBox(pchar(ssql), '系统提示', mb_okcancel + mb_iconwarning) = id_ok) then
begin
with pkq_A_jbjl do
begin
close;
Parameters.ParamByName('@cs').Value := 'z';
Parameters.ParamByName('@csz').Value := qryjbjl.fieldbyname('yhbh').asstring;
Parameters.ParamByName('@ksrq').Value := qryjbjl.fieldbyname('jbksrq').asstring;
Parameters.ParamByName('@jsrq').Value := qryjbjl.fieldbyname('jbjzrq').asstring;
try
execproc;
except
application.MessageBox('执行存储过程pkq_A_jbjl出错!', '信息提示', mb_ok + mb_iconInformation);
end;
qryjbjl.close;
qryjbjl.open;
end;
end
else
exit;
end
else
application.MessageBox('当前无可删除记录', '系统提示', mb_ok + mb_iconwarning);
end;
end;
procedure TFrm_K_Jbdj.BitBtn2Click(Sender: TObject);
begin
inherited;
cmd.Enabled := false;
SearchBox.Visible := true;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?