📄 utkqgl.pas
字号:
{***************************************************************
说明:考勤管理类
***************************************************************
}
unit UTKqgl;
interface
uses windows, forms, SysUtils, Controls, DB, ComCtrls, ADODB,StdCtrls;
type
TKqgl = class
public
RetVal: integer; //返回码
RetMsg: string; //返回信息
QjNO: string; //请假类别编号
QjType: string; //请假类别
SjBc: integer; //班次编号
SjBcms: string; //班次说明
SjKssj: string; //开始时间
SjDksj: string; //打卡时间
SjJzsj: string; //结束时间
SjYssj: string; //延时时间
SjCdzt: string; //出勤类别
QjSjlb: String; //时间类别
constructor create();
public
function QjTypeOpt(const Opt: integer): Boolean; //请假类别增、删、改
function ShowBcTree(TV: TTreeView): Boolean; //显示班次信息
function BcOpt(const Opt: integer): Boolean; //班次信息增、删、改
function QjszData(const Opt:Integer):Boolean; //请假设置
//******************班次相关***************************
function IniBcListView(Const LV:TListView):Boolean; //初始化用户信息
procedure LoadOrganTree(Adocon: TADOConnection; Trview: TTreeView; Layer: integer = 1);//初始班次信息
//procedure loadUserTree(TV: Ttreeview,Bjbh:String);
procedure loadUserTree(TV: Ttreeview;Bjbh:String);//加载用户信息树型结构(ling)
function isListViewExistSameItem(AListView:TListView;
const ACaptionitem:string;
const ASubItem:string;
ASubItemsindex:integer):boolean;
//******************请假登记***************************
function ExistsUser(yhbh: string; var retmsg: string): integer;
//******************报表相关***************************
procedure SetComboxItems(AComboBox:TComboBox;ASqltxt:string;AField:string);
//*****************************************************
function cxbmtjoskey(sType: string;Params: string; var retmsg: string): integer;
//--------用户是否有修改查看此部门权限 sType表示方法e:个人 其它为部门
private
procedure IniData; //初始化变量数据
end;
implementation
uses QForms,DM_DataModal, URecord, UDeviceFunc, UGlobal, UTcard;
constructor TKqgl.create();
begin
inherited Create;
RetVal := -1; //返回码
RetMsg := ''; //返回信息
IniData;
end;
procedure TKqgl.IniData;
begin
QjNO := ''; //请假类别编号
QjType := ''; //请假类别
SjBc := 0; //班次编号
SjBcms := ''; //班次说明
SjKssj := ''; //开始时间
SjDksj := ''; //打卡时间
SjJzsj := ''; //结束时间
SjYssj := ''; //延时时间
SjCdzt := ''; //出勤类别
end;
function TKqgl.QjTypeOpt(const Opt: integer): Boolean;
begin
result := False;
try
with winddata.pKq_N_Lbsz do
begin
parameters.ParamByName('@czfs').Value := Opt;
parameters.ParamByName('@Bh').Value := QjNo;
parameters.ParamByName('@Lb').Value := QjType;
execproc;
retval := parameters.ParamByName('@return_value').Value;
retmsg := parameters.ParamByName('@retmsg').Value;
if retval = 0 then result := True;
end;
except
retval := -1;
retmsg := '操作异常';
end;
end;
function TKqgl.ShowBcTree(TV: TTreeView): Boolean;
var
Qury: TADOQuery;
treeNode, treeNode1: TTreeNode;
MyRecPtr: ptTreeNode;
begin
TV.Items.clear;
Qury := TADOQuery.Create(screen.activeForm);
with Qury do
try
Connection := winddata.AdoConn;
sql.clear;
sql.add('select * from kq_sjb order by bc');
open;
first;
while not eof do
begin
New(MyRecPtr);
MyRecPtr^.nodeValue := fieldbyname('bc').asstring;
treeNode := Tv.Items.AddChildObject(nil, fieldbyname('bc').asstring + '.' + fieldbyname('bcms').asstring, MyRecPtr);
with TV.Items do
begin
treeNode1 := AddChild(treeNode, '班次');
addChild(treeNode1, '开始时间:' + fieldbyname('kssj').asstring);
addChild(treeNode1, '打卡时间:' + fieldbyname('dksj').asstring);
addChild(treeNode1, '截止时间:' + fieldbyname('jzsj').asstring);
addChild(treeNode1, '延时时间:' + fieldbyname('yssj').asstring);
end;
next;
end;
finally
free;
end;
TV.FullExpand;
end;
function TKqgl.BcOpt(const Opt: integer): Boolean;
begin
result := False;
try
with winddata.pKq_N_Sjsz do
begin
parameters.ParamByName('@czfs').Value := Opt;
parameters.ParamByName('@Bc').Value := SjBc;
parameters.ParamByName('@Bcms').Value := SjBcms;
parameters.ParamByName('@Kssj').Value := SjKssj;
parameters.ParamByName('@Dksj').Value := SjDksj;
parameters.ParamByName('@Jzsj').Value := SjJzsj;
parameters.ParamByName('@Yssj').Value := SjYssj;
parameters.ParamByName('@Cdzt').Value := SjCdzt;
execproc;
retval := parameters.ParamByName('@return_value').Value;
retmsg := parameters.ParamByName('@retmsg').Value;
if retval = 0 then result := True;
end;
except
retval := -1;
retmsg := '操作异常';
end;
end;
function TKqgl.QjszData(const Opt: Integer): Boolean;
begin
result := False;
try
with winddata.pkq_A_Qjsz do
begin
parameters.ParamByName('@OptMode').Value := Opt;
parameters.ParamByName('@Bc').Value := SjBc;
parameters.parambyname('@sjlb').Value:=QjSjlb;
execproc;
retval := parameters.ParamByName('@return_value').Value;
retmsg := parameters.ParamByName('@retmsg').Value;
if retval = 0 then result := True;
end;
except
retval := -1;
retmsg := '操作异常';
end;
end;
procedure TKqgl.LoadOrganTree(Adocon: TADOConnection; Trview: TTreeView; Layer: integer = 1);
var
Query1, Query2: TAdoQuery;
jgdm, fjgdm: string;
pTreeNode:ptTreeNode;
treeNode1, treeNode2: TTreeNode;
begin
trview.Items.Clear;
Query1 := TAdoQuery.Create(nil);
Query2 := TAdoQuery.Create(nil);
Query1.Connection := Adocon;
Query2.Connection := Adocon;
with Query1 do
begin
sql.clear;
sql.add('select xqbh,xqmc from zx_s_xqxx order by xqbh');
open;
first;
end;
if Query1.Recordcount = 0 then
begin
Query1.free;
Query2.free;
exit;
end;
try
while not Query1.eof do
begin
jgdm := Query1.fieldbyname('xqbh').value;
New(pTreeNode);
pTreeNode^.nodeValue := 'a' + jgdm;
TreeNode1 := trview.Items.AddChildObject(nil, Query1.fieldbyname('xqmc').value,pTreeNode);
TreeNode1.ImageIndex :=0;
TreeNode1.SelectedIndex :=0;
//加载部门数据******************************************************************
if layer>1 then
begin
with Query2 do
begin
sql.Clear;
sql.add('select bjbh,bjmc from zx_s_bjxx where zybh=''' + jgdm + ''' order by bjbh');
open;
first;
end;
while not Query2.Eof do
begin
New(pTreeNode);
pTreeNode^.nodeValue := 'd' + Query2.fieldbyname('bjbh').value;
TreeNode2:=trview.Items.AddChildObject(TreeNode1, Query2.fieldbyname('bjmc').value,pTreeNode);
TreeNode2.ImageIndex :=2;
TreeNode2.SelectedIndex :=2;
Query2.Next;
end;
end;
//加载分机构数据******************************************************************
Query1.Next;
end;
New(pTreeNode);//必须否则最后的代码成为空值?
finally
Query1.free;
Query2.free;
dispose(pTreeNode);
end;
end;
function TKqgl.IniBcListView(Const LV:TListView): Boolean;
var
BcQuery: TADOQuery;
BcListItem: TListItem;
begin
Result:=False;
BcQuery := TADOQuery.create(screen.activeform);
try
with BcQuery do
begin
Connection := WindData.AdoConn;
sql.Clear;
sql.Add('select * from kq_sjb order by bc');
open;
first;
//////////////////加载班次////////////////////////////
LV.Items.clear;
while not eof do
begin
with LV do
begin
BcListItem := Items.Add;
BcListItem.caption := BcQuery.FieldByName('bc').asstring;
BcListItem.SubItems.Add(BcQuery.FieldByName('bcms').asstring);
BcListItem.SubItems.Add(BcQuery.fieldbyname('kssj').asstring);
BcListItem.SubItems.Add(BcQuery.fieldbyname('dksj').asstring);
BcListItem.SubItems.Add(BcQuery.fieldbyname('yssj').asstring);
BcListItem.SubItems.Add(BcQuery.fieldbyname('jzsj').asstring);
end;
next;
end;
//////////////////////////////////////////////
end;
finally
BcQuery.Destroy;
end;
Result:=True;
end;
procedure TKqgl.loadUserTree(TV: Ttreeview;Bjbh:String);
var
quytree: TADOQuery;
nodevalue, cs: string;
sqltree: string;
bmbh: string;
MyRecPtr: ptTreeNode;
treenode1: Ttreenode;
begin
quytree := TADOQuery.Create(Screen.activeForm);
Quytree.Connection := WindData.AdoConn;
try
NodeValue := ptTreeNode(TV.Selected.data)^.nodeValue;
cs := copy(NodeValue, 1, 1);
//////////////////////////////////////////////////////////////////
treenode1 := tv.selected;
bmbh := copy(nodevalue, 2, (strlen(pchar(nodevalue)) - 1));
sqltree := 'select yhxm,yhbh,bjmc,bjbh from vzx_s_yhxx where bjbh='+Bjbh;
quytree.SQL.clear;
quytree.sql.add(sqltree);
quytree.open;
if tv.Selected.getFirstChild = nil then
begin
while (not quytree.eof) do
begin
New(MyRecPtr);
MyRecPtr^.nodeValue :='e'+bmbh;// 'd' + bmbh; ling
tv.items.addchildobject(treenode1, quytree.fieldbyname('yhxm').asstring, myrecptr);
quytree.next;
end;
end;
//////////////////////////////////////////////////////////////////
finally
quytree.free;
end;
end;
function TKqgl.isListViewExistSameItem(AListView: TListView;
const ACaptionitem, ASubItem: string; ASubItemsindex: integer): boolean;
var
i:integer;
Captionitem,SubItem:string;
begin
result:=false;
with AListView do
begin
for i:=0 to Items.Count-1 do
begin
Captionitem:=Items[i].Caption;
SubItem:=Items[i].SubItems.Strings[ASubItemsindex];
if (ACaptionitem=Captionitem) and (SubItem=ASubItem) then
begin
result:=true;
break;
end
end;
end;
end;
function TKqgl.ExistsUser(yhbh: string; var retmsg: string): integer;
var
qry: TADOQuery;
begin
qry := TADOQuery.Create(screen.ActiveForm);
try
with qry do
begin
Connection := WindData.AdoConn;
sql.Clear;
sql.Add('select yhxm from zx_s_yhxx where yhbh=''' + yhbh + '''');
open;
if eof then
begin
retmsg := '无此用户存在';
result := -1;
end
else
begin
retmsg := fieldbyname('yhxm').asstring;
result := 0;
end;
end;
finally
qry.free;
end;
end;
function TKqgl.cxbmtjoskey(sType: string;Params: string; var retmsg: string): integer;
var
qry: TADOQuery;
begin
if sType<>'e' then //查询非个人是否有权限
begin
if (gtUser.cxbmtj<>'') and (Params<>gtUser.cxbmtj) then
begin
retmsg :=Params;
result := -1;
end
else
result :=0;
exit;
end;
//-------------------个人查询
qry := TADOQuery.Create(screen.ActiveForm);
try
with qry do
begin
Connection := WindData.AdoConn;
sql.Clear;
sql.Add('select bjmc,yhxm from Vzx_s_yhxx where yhbh=''' + Params + '''');
open;
if eof then
begin
retmsg := '无此用户存在';
result := -1;
end
else
begin
if (gtUser.cxbmtj<>'') and (fieldbyname('bjmc').asstring<>gtUser.cxbmtj ) then
begin
retmsg := fieldbyname('yhxm').asstring;
result := -1;
end
else
result := 0;
end;
end;
finally
qry.free;
end;
end;
procedure TKqgl.SetComboxItems(AComboBox: TComboBox;ASqltxt, AField: string);
var
QuryTemp:TADOQuery;
begin
try
AComboBox.Clear;
QuryTemp:=TADOQuery.create(screen.activeform);
with QuryTemp do
begin
Connection:=WindData.AdoConn;
close;
sql.Clear;
sql.add(ASqltxt);
open;
if recordcount=0 then exit;
first;
while not eof do
begin
AComboBox.items.add(fieldbyname(AField).asstring);
next;
end;
end;
finally
QuryTemp.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -