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

📄 yxxx_view_pas.~pas

📁 delphi6.0电子寻更源程序,用来计算保安有无查抄
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
                    l_cf_ti:=fieldbyname('ptime').asdatetime;
                    lost_node:=fieldbyname('node').asstring;
                    _pencode:=fieldbyname('pencode').asstring;
                    _pstatu:=fieldbyname('pstatu').asstring;
                    with dm_yxxx_view.q_yxxx_fl do
                      begin // 记录漏点信息 2.7
                      //close;
                      //open;
                      append;
                      fieldbyname('xxbs').asstring:='3';
                      fieldbyname('linename').asstring:=linename1;
                      fieldbyname('shifts').asstring:=shifts1;
                      fieldbyname('pdate').asdatetime:=date1;
                      fieldbyname('code').asstring:=code1;
                      fieldbyname('ptime').asdatetime:=l_cf_ti;
                      fieldbyname('node').asstring:=lost_node;
                      fieldbyname('pencode').asstring:=_pencode;
                      fieldbyname('pstatu').asstring:=_pstatu;
                      post;
                      end;   //  记录漏点信息2.7
                      if l_cf_lseq=1 then
                         begin //2.6 重新循环(第一点),但前一次没完成
                         //l_cf_da:=fieldbyname('pdate').asdatetime;
                         //l_cf_ti:=fieldbyname('ptime').asdatetime;
                         bookmark1:=getbookmark;
                         l_cf_curs:=2;
                         lxbs:=false;
                         //l_cf_da:=fieldbyname('pdate').asdatetime;
                         //l_cf_ti:=fieldbyname('ptime').asdatetime;
                         //lost_node:=fieldbyname('node').asstring;
                         end  // 2.6
                         else
                         begin//2.7 中间某点乱序
                         if l_cf_curs=l_com then
                           begin //2.8最后一点乱序
                           l_cf_curs:=1;
                           end  //2.8最后一点乱序
                           else
                           begin//2.9
                           l_cf_curs:=l_cf_curs+1;
                           end; //2.9
                         end;  //2.7
                    end;   //2.5
                   next;
                   end;    //2.1
               end;  // 检查乱序记录 2.0
 end;//  0.1检查记录
 end;
 procedure tyxxx_view.selectoneday(date1:tdatetime);
var
  l_tx:integer;
  L_DATE,L_TIME:TDATETIME;
  l_lseq:integer;
  l_d1,l_t1,L_d2,l_t2:tdatetime;
  l_node,l_workercode,l_statu,l_n2,l_w2,l_ps2:string;//检点巡更点连续显现
begin  // 选择一天的巡更情况
  _pdate:=date1;
   with dm_yxxx_view.q_fpxl do
     begin   //0.02
     first;
     while not eof do
       begin //查找人员、线路、班次
        with dm_yxxx_view.T_yxxx_view   do
          begin
          //close;
          //open;
          first;
          while not eof do
          begin
          delete;
          END;
          END;
        _code:=fieldbyname('code').asstring;
       _linename:=fieldbyname('linename').asstring;
       _shifts:=fieldbyname('shift').asstring;
       with dm_yxxx_view.q_ysxx do  //可以建立存储过程,每次循环都打开
         begin   //生成有效信息   临时
         close;
         parambyname('_pdate1').asdatetime:=_pdate-1 ;
         parambyname('_pdate2').asdatetime:=_pdate+1;
         parambyname('_linename').asstring:=_linename;
         parambyname('_workercode').asstring:=_code;
         parambyname('_shifts').asstring:=_shifts;
         //sql.add(order by )
         open;
         first;
           if recordcount >0 then
           begin //0.01
          // dm_yxxx_view.t_yxxx_view.BatchMove(dm_yxxx_view.q_ysxx,batAppend);
           while not eof do
              begin       //建立临时
                with  dm_yxxx_vieW.T_YXXX_VIEW  do //t_yxxxx_view----临时表temp;q_yxxx(table1)-----yxxx.db
                 begin
                   append;
                   edit;
                   fieldbyname('linename').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('linename').asstring;
                   fieldbyname('pencode').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('pencode').asstring;
                   fieldbyname('node').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('node').asstring;
                   fieldbyname('workercode').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('workercode').asstring;
                   fieldbyname('workername').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('workername').asstring;
                   fieldbyname('nodename').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('name').asstring;
                   fieldbyname('nodeplace').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('nodeplace').asstring;
                   fieldbyname('shifts').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('shifts').asstring;
                   fieldbyname('pstatu').asstring:=dm_yxxx_view.q_ysxx.fieldbyname('pstatu').asstring;
                   fieldbyname('pdate').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('pdate').asdatetime;
                   fieldbyname('ptime').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('ptime').asdatetime;
                   fieldbyname('firstp').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('firstp').asdatetime;
                   fieldbyname('lastp').asdatetime:=dm_yxxx_view.q_ysxx.fieldbyname('lastp').asdatetime;
                   fieldbyname('lseq').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('lseq').asinteger;
                   fieldbyname('ntime').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('ntime').asinteger;
                   fieldbyname('chkcycl').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('chkcycl').asinteger;
                   fieldbyname('dgpcsx').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('dgpcsx').asinteger;
                   fieldbyname('dgpcxx').asinteger:=dm_yxxx_view.q_ysxx.fieldbyname('dgpcxx').asinteger;
                   post;
                   end;
                 next;
               end;//建立临时表
              end;// 0.01
           end;//生成有效信息  临时
          WITH DM_yxxx_view.t_yxxx_view do
          begin  //从临时表中  删除上班时间不合格两点连续的记录
          if  not  IsEmpty  then
           begin   //0.3
         l_begintime:=fieldbyname('firstp').asdatetime;
         l_endtime:=fieldbyname('lastp').asdatetime;
         _dgpcxx:=fieldbyname('dgpcxx').asinteger;
         _dgpcsx:=fieldbyname('dgpcsx').asinteger;
         //_ntime:=fieldbyname('ntime').asinteger;
         _chkcycl:=fieldbyname('chkcycl').asinteger;
         L_tX:=dectime(l_endtime,l_begintime);
         //while not eof do
          //begin
          IF (L_TX=0) OR ((L_TX/60)=24)	then //上班时间与下半时进相等
  	    begin //0.0
            IF L_com<3  THEN     //小于三个点
              BEGIN
              FIRST;
              WHILE NOT EOF DO
                BEGIN
              	L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
                if   (decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or(decdatetime(l_date,l_time,_pdate,l_begintime)>1440) then
                  begin
          	  delete;
                  end;
                  //else
                  next;
                END;
              end
              ELSE
               begin //大于三个点
               first;
               WHILE	NOT EOF DO
  	         BEGIN
    	         L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                 L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
       	         if (decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or (decdatetime(l_date,l_time,_pdate,l_begintime)>1440)	then
         	   begin
                   delete;
	           end;
                   //else
                 next;
                 END;
               last;
               WHILE not  bof	do
                  begin
        	  l_lseq:=fieldbyname('lseq').AsInteger;
	          IF (L_LSEQ<(L_COM/2)) then
                    BEGIN
          	    DELETE;
                     IF BOF   THEN	break
                    end
                    else
                    break;
                  end;
                first;
	      	WHILE not eof	do
                 begin
                 l_lseq:=fieldbyname('lseq').AsInteger;
        	 if l_LSEQ>(L_COM/2) then
                   begin
          	   DELETE;
                   IF EOF	then
                    break;
                   end
                   else
                   break;
                 end;
               end;
            end  //0.0
            ELSE
             begin  //0.1 上班时间与下班时间不等
     	      IF   l_begintime<l_endtime then
                begin  //上班时间小于下班时间
      	        first;
      	        while	not	eof	do
                  begin
    	   	  L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                  L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
                  if   (decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or (decdatetime(l_date,l_time,_pdate,l_endtime)>0)  then
                    begin
                    delete;
                    end
                    else
                    next;
                  end;
                  end
                  ELSE
                  begin//上半时间大于下班时间
      	           first;
                   while	not	eof	do
                     begin
     	   	     L_DATE:=FIELDBYNAME('PDATE').AsDATETIME;
                     L_TIME:=FIELDBYNAME('PTIME').ASDATETIME;
                     if(decdatetime(l_date,l_time,_pdate,l_begintime)<(0-_dgpcsx))or (decdatetime(l_date,l_time,_Pdate+1,l_endtime)>0)	then
                       begin
                       delete;
                       end
                       else
                       next;
                     end;
                   end;
                end; //0.1
             // open;
              FIRST;
              deletesamerec;//删除两点连续现象
              //showmessage(inttostr(recordcount));
                end;//0.3
            end;// 从临时表 删除上班时间不合格两点连续的记录
              with dm_yxxx_view.BatchMove1 do
                begin //从临时信息表导入到有效信息表中。
                 execute;
                //showmessage(inttostr(DM_yxxx_view.t_yxxx_view.recordcount));
                end;
           checkrecord(_pdate,_code,_linename,_shifts);
       next;
       end; //查找人员线路班次
     end;//0.02
end;   //选择一天的巡更情况
function Tyxxx_view.roundtime(time1,time2:tdatetime):integer;
begin //time2 下班时间 time1  上班时间
if time2>time1  then
result:=round(1440*(frac(time2)-frac(time1)))
else
if time2<time1 then
result:= 1440-round(1440*(frac(time1)-frac(time2)))
else if time2=time1 then
result:=1440 ;
end;
function	Tyxxx_view.ttom(time1:tdatetime):integer;
begin
	result:=round(1440*(frac(time1)-strtotime('00:00:00')));
end;

function	Tyxxx_view.dectime(time1,time2:tdatetime):integer;
begin
	result:=round(1440*(frac(time1)-frac(time2)));
end;

function	Tyxxx_view.decdatetime(date1,time1,date2,time2:tdatetime):integer;
//var d1,d2,t1,t2:string;
begin
//d1:=datetostr(date1);
//d2:=datetostr(date2);
//t1:=timetostr(time1);
//t2:=timetostr(time2);
	result:=round((int(date1)-int(date2))*1440+(frac(time1)-frac(time2))*1440);
end;
procedure	Tyxxx_view.DeleteSameRec;
var
  l_date,l_time,L_d2,l_t2:tdatetime;
  l_node,l_workercode,l_statu,l_n2,l_w2,l_ps2:string;
begin
	with   dm_yxxx_view.t_yxxx_view  do
  begin
  	if isempty	then	exit;
 	  first;
 		L_DATE:=FieldByName('pdate').asdatetime;
		L_TIME:=FieldByName('ptime').asdatetime;
		L_NODE:=FieldByName('node').asstring;
		//L_WORKerCODE:=FieldByName('workercode').asstring;
                //L_STATU:=FieldByName('pstatu').value;
                 NEXT;
		WHILE NOT EOF	do
    begin
	 		L_D2:=FieldByName('pdate').asdatetime;
			L_T2:=FieldByName('ptime').asdatetime;
			L_N2:=FieldByName('node').asstring;
		       //	L_W2:=FieldByName('workercode').asstring;
                       // l_ps2:=FieldByName('pstatu').value;
    	IF (L_NODE=l_n2) then
      begin
      	IF decdatetime(l_D2,l_t2,L_Date,l_time)<=5	then
        begin
        	prior;
                DELETE;
        end;
      end;
	 		L_DATE:=FieldByName('pdate').asdatetime;
			L_TIME:=FieldByName('ptime').asdatetime;
			L_NODE:=FieldByName('node').asstring;
		      //	L_WORKerCODE:=FieldByName('workercode').asstring;
     // L_STATU:=FieldByName('pstatu').value;
      NEXT;
		END;
  end;
//  if not Table1.isempty	then  T_Patrol.batchmove(Table1,batAppend);
end;
procedure Tyxxx_view.FormCreate(Sender: TObject);
var ls,ms,rs:string;
begin
if not assigned(DM_yxxx_view) then
  Application.CreateForm(TDm_yxxx_view, DM_yxxx_view);
//dm_yxxx_view.q_yxxx.close;
if not assigned(yxxx_report) then
application.createform(Tyxxx_report,yxxx_report);
if not assigned(ldxx_report) then
application.createform(Tldxx_report,ldxx_report);
if not assigned(lxxx_report) then
application.createform(Tlxxx_report,lxxx_report);
if not assigned(sjyc_report) then
application.createform(Tsjyc_report,sjyc_report);
if not assigned(wzxx_report) then
application.createform(Twzxx_report,wzxx_report);
getkeyset(ls,ms,rs);
RadioButton1.Caption:=ls;
RadioButton2.Caption:=ms;
RadioButton3.Caption:=rs;
end;
procedure tyxxx_view.ThreadDone(sender:tobject);
begin
// StatusBar1.Panels[0].Text:='数据正在查询完毕!';
 BitBtn11.Enabled:=true;
 BitBtn12.Enabled:=true;
 BitBtn3.Enabled:=true;

⌨️ 快捷键说明

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