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

📄 ukqdatamanager.pas

📁 适合行业为眼镜业
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit UKqdatamanager;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, fm_Base, DB, StdCtrls, Grids, DBGrids, ExtCtrls, DBClient,DateUtils,
  ComCtrls;

type
  TfmKqManager = class(TfmBase)
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Panel3: TPanel;
    Mmsg: TMemo;
    DBGrid2: TDBGrid;
    dsbasedata: TDataSource;
    dsKqdata: TDataSource;
    cdsdata1: TClientDataSet;
    cdsdata2: TClientDataSet;
    TreeBase: TTreeView;
    cdsdata: TClientDataSet;
    procedure FormShow(Sender: TObject);
    procedure TreeBaseDblClick(Sender: TObject);
  private
    { Private declarations }
     cd,cd1,cd2,cd3,cd4,cd5,cd6,cd7,zt,zt1,zt2,zt3,zt4,zt5,zt6,zt7,kg1,kg2,kg3,kg4,kg5,kg6,kg7,kg8:string; ///迟到,早退,旷工
   cdtj,zttj,dtj,cou:real; //迟到,早退,矿工
   bz:integer;//标志位
    function binddata():boolean;
    function readdata(E_no:string):boolean;
    function Total_Kq(e_no:string):string;
    procedure add_data(cdsNO:tclientdataset;sql:string);
    function ReadTree(Bm:string='';Tnode:TTreeNode=nil):integer;//(1:无数据,2:有数据,3:异常);
  public
    { Public declarations }
  end;

var
  fmKqManager: TfmKqManager;

implementation

uses untdatadm, func;

{$R *.dfm}
///////////////////////////////////////////
function TfmKqManager.ReadTree(Bm:string='';Tnode:TTreeNode=nil):integer;
var
  sql:widestring;
  node:ttreenode;
  datas:olevariant;
  f:integer;
begin
  f:=1;
  if trim(bm)='' then
  begin
    sql:='select part_name as name,part_no as no from part where isnull(one_partno,'+''''+'0'+''''+')='+''''+'0'+'''';
  end else
  begin
    sql:='select p_no as no,employe_name as name from chang where part='+''''+trim(bm)+'''';
  end;
  datas:=null;
  cdsdata.Close;
  cdsdata.Data:=null;
  try
    ipubtemp.ty_query(sql,datas);
    if not varisnull(datas) then
    begin
      cdsdata.Data:=datas;
      datas:=null;
      cdsdata.Open;
      if not cdsdata.IsEmpty then
      begin
        while not cdsdata.Eof do
        begin
          if trim(bm)='' then
          begin
           node:=treebase.Items.add(tnode,trim(cdsdata.fieldbyname('no').AsString)+'_'+trim(cdsdata.fieldbyname('name').AsString));
          end else
          begin
            if (tnode.Count<cdsdata.RecordCount) and (tnode.Parent=nil) then
            node:=treebase.Items.AddChild(tnode,trim(cdsdata.fieldbyname('no').AsString)+'_'+trim(cdsdata.fieldbyname('name').AsString));
          end;
          cdsdata.Next;
        end;
      end else
      begin
        f:=2;
      end;
    end;
  except
    f:=3;
  end;
  cdsdata.Close;
  cdsdata.Data:=null;
  result:=f;
end;
procedure tfmKqManager.add_data(cdsNO:tclientdataset;sql:string);
var
  datas:olevariant;
  sqlpub:widestring;
begin
  sqlpub:=sql;
  cdsNO.Close;
  cdsNO.Data:=null;
  try
    datas:=null;
    ipubtemp.ty_query(sqlpub,datas); 
    if not varisnull(datas) then
    begin
      cdsNO.Data:=datas;
      cdsNO.Open;
      datas:=null;
    end;
  except
  end;
end;


function tfmKqManager.binddata():boolean;
var
  sqlpub:widestring;
  datas:olevariant;
begin
  result:=false;
  sqlpub:=' select p_no,p_name from dp_person';
  dmmain.CDSquery2.Close;
  dmmain.CDSquery2.Data:=null;
  try
    datas:=null;
    datas:=adisp.resultrecord(sqlpub);
    if not varisnull(datas) then
    begin
      dmmain.CDSquery2.Data:=datas;
      dmmain.CDSquery2.Open;
      datas:=null;
      result:=true;
    end;
  except
  end;
end;

function tfmKqManager.readdata(E_no:string):boolean;
var
  sqlpub:widestring;
  datas:olevariant;
begin
  result:=false;
  sqlpub:=' select * from dp_kqdocument where person_no ='+''''+trim(e_no)+'''';
  dmmain.CDSexecsql .Close;
  dmmain.CDSexecsql .Data:=null;
  try
    datas:=null;
    datas:=adisp.execSql(sqlpub);
    if not varisnull(datas) then
    begin
      dmmain.CDSexecsql .Data:=datas;
      dmmain.CDSexecsql .Open;
      datas:=null;
      if  not dmmain.CDSexecsql.IsEmpty then
      begin
        result:=true;
      end;
    end
  except
  end;

end;

function tfmKqManager.Total_Kq(e_no:string):string;
var
 yy,mm,dd:word;
 hh,ff,ss,msec:word;
 xxts,ts:INTEGER;
 tt:Smallint;
 sqls,tj:string;
begin
  //////////////////////////////////////////////////
  sqls:= 'select * from dp_bcap where person_no='+''''+trim(e_no)+'''';
  add_data(cdsdata1,sqls);
  tj:='';
  dtj:=0;
  while not dmmain.CDSexecsql.Eof do
  begin
    /////////////////////////////////////////////////////刷卡日期对应的班次时间//////////////////////////////////////////
    decodedate(dmmain.CDSexecsql.fieldbyname('newdate').AsDateTime,yy,mm,dd);
    tj:='T'+inttostr(dd);

    sqls:='select * from dp_bcjg where bc_no='+''''+trim(cdsdata1.fieldbyname(tj).AsString)+'''';
    add_data(cdsdata2,sqls);
    /////////////////////////////////////////////////////////////////////////////////////////
    bz:=0;//每次重只标志
    if dmmain.CDSexecsql.FieldByName('m_up').AsDateTime<>0 then
    begin
      cd:=formatdatetime('hh'':''mm',dmmain.CDSexecsql.FieldByName('m_up').AsDateTime); //时间对比;
      decodetime(cdsdata2.FieldByName('swsb').AsDateTime,hh,ff,ss,msec);////*
      ff:=ff+5;
      cd1:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); ////*/////////迟到时间

      ff:=ff+30-5;//***************************//
      if ff>=60 then //满60分中换为小时;
      begin
        hh:=hh+1;
        ff:=ff-60;
      end;
      kg1:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); //************旷工时间
    end else
    begin
      kg1:='00:00:00';
      cd:='00:00:00';
      cd1:='00:00:00';
    end;
    if dmmain.CDSexecsql.FieldByName('a_up').AsDateTime<>0 then
    begin
      cd2:=formatdatetime('hh'':''mm',dmmain.CDSexecsql.FieldByName('a_up').AsDateTime);
      decodetime(cdsdata2.FieldByName('xwsb').AsDateTime,hh,ff,ss,msec);
      ff:=ff+5;
      cd3:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); ////////////////
      ff:=ff+30-5;//***************************//
      if ff>=60 then //满60分中换为小时;
      begin
        hh:=hh+1;
        ff:=ff-60;
      end;
      kg2:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); //************旷工时间
    end else
    begin
      kg2:='00:00:00';
      cd2:='00:00:00';
      cd3:='00:00:00';
    end;
    if dmmain.CDSexecsql.FieldByName('n_up').AsDateTime<>0 then
    begin
      cd4:=formatdatetime('hh'':''mm',dmmain.CDSexecsql.FieldByName('n_up').AsDateTime);
      decodetime(cdsdata2.FieldByName('wssb').AsDateTime,hh,ff,ss,msec);
      ff:=mm+5;
      cd5:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec));///////////////////迟到

      ff:=ff+30-5;//***************************//
      if ff>=60 then //满60分中换为小时;
      begin
        hh:=hh+1;
        ff:=ff-60;
      end;
      kg3:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); //************旷工时间
    end else
    begin
      kg3:='00:00:00';
      cd4:='00:00:00';
      cd5:='00:00:00';
    end;
    if dmmain.CDSexecsql.FieldByName('add_up').AsDateTime<>0 then
    begin
      cd6:=formatdatetime('hh'':''mm',dmmain.CDSexecsql.FieldByName('add_up').AsDateTime);
      decodetime(cdsdata2.FieldByName('jbsb').AsDateTime,hh,ff,ss,msec);
      ff:=ff+5;
      cd7:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec));

      ff:=ff+30-5;//***************************//
      if ff>=60 then //满60分中换为小时;
      begin
        hh:=hh+1;
        ff:=ff-60;
      end;
      kg4:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); //************旷工时间
    end else
    begin
      kg4:='00:00:00';
      cd6:='00:00:00';
      cd7:='00:00:00';
    end;
/////////////////////////////////////////早退////////////////////////////////////////////
    if dmmain.CDSexecsql.FieldByName('a_down').AsDateTime<>0 then
    begin
      zt:=formatdatetime('hh'':''mm',dmmain.CDSexecsql.FieldByName('a_down').AsDateTime);
      decodetime(cdsdata2.FieldByName('swxb').AsDateTime,hh,ff,ss,msec);
      tt:=ff;
      tt:=tt-5;
      zt1:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec));//早退

      tt:=tt-30+5;//***************************//
      if tt<0 then //小于0减去小时;
      begin
        hh:=hh-1;
        tt:=tt+60;
      end;
      ff:=tt;
      kg5:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); //************旷工时间
    end else
    begin
      kg5:='00:00:00';
      zt:='00:00:00';
      zt1:='00:00:00';
    end;
    if dmmain.CDSexecsql.FieldByName('a_down').AsDateTime<>0 then
    begin
      zt2:=formatdatetime('hh'':''mm',dmmain.CDSexecsql.FieldByName('a_down').AsDateTime );
      decodetime(cdsdata2.FieldByName('xwxb').AsDateTime,hh,ff,ss,msec);
      tt:=ff;
      tt:=tt-5;
      zt3:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec));//早退

      tt:=tt-30+5;//***************************//
      if tt<0 then //小于0减去小时;
      begin
        hh:=hh-1;
        tt:=tt+60;
      end;
      ff:=tt;
      kg6:=formatdatetime('hh'':''mm',encodetime(hh,ff,ss,msec)); //************旷工时间
    end else
    begin
      kg6:='00:00:00';
      zt2:='00:00:00';
      zt3:='00:00:00';
    end;
    if (dmmain.CDSexecsql.FieldByName('n_down').AsDateTime<>0) and (dmmain.CDSexecsql.FieldByName('n_down').AsString<>'1900-1-1')  then
    begin
      zt4:=formatdatetime('hh'':''mm',dmmain.CDSexecsql.FieldByName('n_down').AsDateTime);
      if cdsdata2.FieldByName('wsxb').AsDateTime=0 then  //晚上下班为第二天的打卡;
      begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -