frm_k_sgqdpas.pas
来自「是一个用delphi设计的考勤系统」· PAS 代码 · 共 391 行
PAS
391 行
unit Frm_K_SgqdPas;
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_Sgqd = class(TMyModalForm1)
TV: TTreeView;
DBGrid1: TDBGrid;
cmd: TPanel;
BcLv: TListView;
searchbox: TPanel;
Panel5: TPanel;
Label9: TLabel;
Label10: TLabel;
chk1: TCheckBox;
Edit1: TEdit;
GroupBox3: TGroupBox;
Label6: TLabel;
dtp1: TDateTimePicker;
dtp2: TDateTimePicker;
chk3: TCheckBox;
chk2: TCheckBox;
yhxm: TEdit;
Dkqjl: TDataSource;
Dyhxx: TDataSource;
BtnOk: TChangeImg;
LBtnOk: TLabelB;
BtnExit: TChangeImg;
LBtnExit: TLabelB;
Qyhxx: TADOQuery;
Qrysgqd: TADOQuery;
pkq_A_Sgqd: TADOStoredProc;
Rg2: TRadioButton;
yhbh: TEdit;
bmmc: TEdit;
Rg1: TRadioButton;
Label7: TLabel;
Label8: TLabel;
Label3: TLabel;
kqrq: TDateTimePicker;
cmbqdlb: TComboBox;
dtpjsrq: TDateTimePicker;
yhxm2: TEdit;
rg3: TRadioButton;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure BtnOkClick(Sender: TObject);
procedure BtnExitClick(Sender: TObject);
procedure chk1Click(Sender: TObject);
procedure ChangeImg1Click(Sender: TObject);
procedure ChangeImg2Click(Sender: TObject);
procedure TVClick(Sender: TObject);
procedure yhbhEnter(Sender: TObject);
procedure BcLvColumnClick(Sender: TObject; Column: TListColumn);
procedure bmmcEnter(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frm_K_Sgqd: TFrm_K_Sgqd;
nodevalue: string; //树节点的数值
implementation
uses DM_DataModal, UGlobal, Frm_S_UsrConfigPas,
frmExamPassWordPas;
{$R *.dfm}
procedure TFrm_K_Sgqd.FormCreate(Sender: TObject);
begin
inherited;
gtKqgl.LoadOrganTree(Winddata.AdoConn, TV, 4); //初始化用户信息
gtKqgl.IniBcListView(bcLv); //初始化班次
dtp1.date := date;
dtp2.date := date;
kqrq.date := date;
dtpjsrq.date := date;
end;
procedure TFrm_K_Sgqd.BtnOkClick(Sender: TObject);
var
filterStr: string;
begin
inherited;
filterStr := 'select * from vkq_kqjlcur where sgdk=''s''';
if chk1.Checked then
filterStr := filterStr + ' and yhbh=''' + edit1.Text + '''';
if chk2.Checked then
filterStr := filterStr + ' and yhxm=''' + yhxm.Text + '''';
if (chk3.checked) then
begin
if dtp1.date > dtp2.date then
begin
application.MessageBox('时间顺序不对,请重设!', '信息提示', mb_ok + mb_IconInformation);
exit;
end;
filterStr := filterStr + ' and jlrq>=''' + datetostr(dtp1.date) + '''';
filterStr := filterStr + ' and jlrq<=''' + datetostr(dtp2.date) + '''';
end;
with Qrysgqd 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;
end;
procedure TFrm_K_Sgqd.BtnExitClick(Sender: TObject);
begin
inherited;
SearchBox.visible := false;
end;
procedure TFrm_K_Sgqd.chk1Click(Sender: TObject);
begin
inherited;
if chk1.Checked then Edit1.SetFocus;
end;
procedure TFrm_K_Sgqd.ChangeImg1Click(Sender: TObject);
begin
inherited;
with Qyhxx do
begin
if Recordcount = 0 then exit;
yhbh.text := fieldbyname('yhbh').asstring;
end;
end;
procedure TFrm_K_Sgqd.ChangeImg2Click(Sender: TObject);
begin
inherited;
Rg1.Checked := True;
end;
procedure TFrm_K_Sgqd.TVClick(Sender: TObject);
begin
inherited;
try
if tv.Selected.Level = 1 then
begin
bmmc.text := TV.Selected.Text;
rg1.checked := true;
end;
{
if tv.Selected.Level = 2 then
begin
yhxm2.text := TV.Selected.Text;
rg3.checked := true;
end;
}
except
end;
{
NodeValue := ptTreeNode(TV.Selected.data)^.nodeValue;
if (copy(NodeValue, 1, 1) = 'd') then gtKqgl.LoadUserTree(TV,copy(NodeValue, 2, Length(NodeValue)-1));
}
end;
procedure TFrm_K_Sgqd.yhbhEnter(Sender: TObject);
begin
inherited;
rg2.Checked := true;
end;
procedure TFrm_K_Sgqd.BcLvColumnClick(Sender: TObject;
Column: TListColumn);
var
iCount: integer;
begin
inherited;
if Column.ID = 0 then
begin
for iCount := 0 to BcLv.Items.count - 1 do
BcLv.items[iCount].Checked := not (BcLv.items[iCount].Checked);
end;
end;
procedure TFrm_K_Sgqd.bmmcEnter(Sender: TObject);
begin
inherited;
rg1.Checked := true;
end;
procedure TFrm_K_Sgqd.N5Click(Sender: TObject);
begin
Sender := yhbh;
inherited;
end;
procedure TFrm_K_Sgqd.BitBtn1Click(Sender: TObject);
var
cs, csz, sqltxt, mesg, NodeValue, AdminPwd: string; //节点关联的数值
iBccount: integer;
qry: TADOQuery;
ksrq: Tdatetime;
jsrq: Tdatetime;
RetVal: Integer;
RetMsg,cxbmtjoskeyvalue: string;
yhbh_temp:string; //姓名查询时取出用户编号
begin
inherited;
qry := TADOQuery.Create(self);
ksrq := kqrq.date;
jsrq := dtpjsrq.date;
try
with qry do
begin
Connection := WindData.AdoConn;
sql.Clear;
sql.Add('select distinct n,y from kq_bcsd' + ' where n=''' + copy(datetostr(kqrq.date), 1, 4)
+ ''' and y=''' + copy(datetostr(kqrq.date), 6, 2) + '''');
open;
if eof then
begin
application.MessageBox('此月的班次未设置或已经月结,不能进行手工签到!', '系统提示', mb_ok + mb_iconwarning);
exit;
end;
end;
finally
qry.free;
end;
// 个人考勤
if cmbqdlb.Text = '' then
begin
application.MessageBox('请选择签到类别!', '信息提示', mb_ok + mb_IconInformation);
exit
end;
//**************操作员身份认证*************
frmExamPassWord := TfrmExamPassWord.Create(application);
if frmExamPassWord.ShowModal =2 then
begin
frmExamPassWord.Free;
exit;
end
else
frmExamPassWord.Free;
//************用户姓名*****************************
if Rg3.Checked then
begin
if yhxm2.text = '' then
begin
application.MessageBox('请输入用户姓名!', '信息提示', mb_ok + mb_IconInformation);
yhxm2.setfocus;
exit;
end;
with qyhxx do
begin
sql.Clear;
sqltxt := 'select yhbh,yhxm from zx_s_yhxx where yhxm=''' + trim(yhxm2.text) + '''';
sql.Add(sqltxt);
open;
if eof then
begin
application.MessageBox('该用户未发卡,请重输!', '信息提示', mb_ok + mb_IconInformation);
exit;
end
else
begin
if qyhxx.RecordCount>2 then
begin
application.MessageBox(pchar('有多人叫'+trim(yhxm2.text)+'用户,无法用姓名签到,请用编号签到'), '信息提示', mb_ok + mb_IconInformation);
exit;
end;
yhbh_temp:=qyhxx.fieldbyname('yhbh').asstring;
end;
end;
cs := 'e';
csz := trim(yhbh_temp);
cxbmtjoskeyvalue:=trim(yhbh_temp);
end;
//***************************************** 用户编号
if Rg2.Checked then
begin
if yhbh.text = '' then
begin
application.MessageBox('请输入用户编号!', '信息提示', mb_ok + mb_IconInformation);
yhbh.setfocus;
exit;
end;
with qyhxx do
begin
sql.Clear;
sqltxt := 'select yhbh,yhxm from zx_s_yhxx where yhbh=''' + trim(yhbh.text) + '''';
sql.Add(sqltxt);
open;
if eof then
begin
application.MessageBox('该用户未发卡,请重输!', '信息提示', mb_ok + mb_IconInformation);
exit;
end;
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);
cxbmtjoskeyvalue:=TV.Selected.text;
mesg := '请确认所选的部门:';
if application.MessageBox(pchar(mesg + TV.Selected.text),
'信息提示', mb_YesNo + mb_IconQuestion) = IdNo then exit;
end;
//
if gtKqgl.cxbmtjoskey(cs,cxbmtjoskeyvalue, retmsg) <> 0 then
begin
application.MessageBox(PChar('您无权帮'+retmsg+'用户签到'), '信息提示', mb_ok + mb_IconInformation);
exit;
end;
while ksrq <= jsrq do
begin
for iBcCount := 0 to BcLv.Items.count - 1 do
begin
if bclv.Items[iBcCount].Checked then
with pkq_A_Sgqd do
begin
close;
Parameters.ParamByName('@cs').Value := cs;
Parameters.ParamByName('@csz').Value := csz;
Parameters.ParamByName('@kqrq').Value := datetostr(ksrq);
if copy(cmbqdlb.text, 1, 1) = 'Y' then Parameters.ParamByName('@kqsj').Value := bclv.Items[iBcCount].SubItems[2]
else if copy(cmbqdlb.text, 1, 1) = 'C' then Parameters.ParamByName('@kqsj').Value := bclv.Items[iBcCount].SubItems[4]
else if copy(cmbqdlb.text, 1, 1) = 'Z' then Parameters.ParamByName('@kqsj').Value := bclv.Items[iBcCount].SubItems[1]
else if copy(cmbqdlb.text, 1, 1) = 'O' then Parameters.ParamByName('@kqsj').Value := timetostr(strtotime(bclv.Items[iBcCount].SubItems[4]) + 0.001);
Parameters.ParamByName('@qdlb').Value := copy(cmbqdlb.Text, 1, 1);
Parameters.ParamByName('@bc').Value := strtoint(bclv.Items[ibccount].caption);
try
execproc;
except
RetMsg := Parameters.ParamByName('@retmsg').Value;
application.MessageBox(PChar(RetMsg), '信息提示', mb_ok + mb_IconInformation);
exit;
end;
end;
end;
ksrq := ksrq + 1;
end;
with Qrysgqd do
begin
close;
sql.Clear;
sql.Add('select yhbh,yhxm,jlrq,jlsj,sgdk bmbh,bmmc from vkq_kqjlcur where yhbh=''' + trim(yhbh.text) + '''' +
' and jlrq>=''' + datetostr(kqrq.date) + ''' and jlrq<=''' + datetostr(dtpjsrq.date) + '''');
open;
end;
application.MessageBox('签到完毕!', '信息提示', mb_ok + mb_IconInformation);
yhbh.Clear;
end;
procedure TFrm_K_Sgqd.BitBtn3Click(Sender: TObject);
begin
inherited;
searchBox.visible := true;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?