⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utkqgl.pas

📁 是一个用delphi设计的考勤系统
💻 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 + -