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

📄 yxxx_view_pas.pas

📁 delphi6.0电子寻更源程序,用来计算保安有无查抄
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  DM_yxxx_view.q_lxxx_view.enableControls;
 end;   //打印乱序信息
 if pagecontrol1.ActivePage=tabsheet4 then
 begin    //打印时间异常信息
  DM_yxxx_view.q_sjyc.DisableControls;
  sjyc_report.QRLabel15.caption:=password.ComboBox1.text;
  sjyc_report.QuickRep1.preview;
  sjyc_report.QuickRep1.qrprinter:=nil;
  DM_yxxx_view.q_sjyc.enableControls;
 end;     //打印时间异常信息
 if pagecontrol1.ActivePage=tabsheet5 then
 begin   //打印完整信息
  DM_yxxx_view.q_wzxx_view.DisableControls;
  wzxx_report.qrlabel15.caption:=password.combobox1.text;
  wzxx_report.QuickRep1.preview;
  wzxx_report.QuickRep1.qrprinter:=nil;
  DM_yxxx_view.q_wzxx_view.enableControls;
 end;      //打印完整信息
end;

procedure Tyxxx_view.PageControl1Change(Sender: TObject);
{var i:integer;
ldbs:boolean; //漏点标示
j,lost_lseq:integer;          //漏点记录
lost_node,lost_nodeplace,lost_name:string;//漏点记录
number,count:array[1..100] of integer;  //漏点信息
l_cf_curs,l_cf_firsttrec,l_cf_endrec,l_cf_lseq:integer;//乱序信息
l_cf_date,l_cf_da,l_cf_time,l_cf_ti,l_cf_endt,l_cf_brkbt,l_cf_brket:tdatetime;
l_cf_ifcon:boolean;
_pencode,_pstatu:string;
bookmark1,bookmark2,bookmark3:tbookmark;//乱序信息
lxbs:boolean;
l_ci_lseq:integer; //时间异常
L_ci_t1,l_ci_d1 ,l_ci_t2,l_ci_d2:tdatetime;
l_ci_time:real;    //时间异常 }
begin
{if pagecontrol1.ActivePage=tabsheet1 then
with dm_yxxx_view.q_yxxx do
begin
Close;
sql.clear;
sql.add('select * from yxxx ') ;
sql.add('order by pdate,workercode,linename,shifts,ptime');
open;
end;
if pagecontrol1.ActivePage<>tabsheet1 then
begin
  if not flag then
  begin//查找漏检、乱序、时间异常、完整记录
  flag:=true;
  dm_yxxx_view.q_yxxx_fl.close;
  dm_yxxx_view.q_yxxx_fl.TableName:='yxxx_fl.db';
  dm_yxxx_view.q_yxxx_fl.Databasename:='GYXGdb';
  dm_yxxx_view.q_yxxx_fl.EmptyTable;
  dm_yxxx_view.q_yxxx_fl.open;
   with dm_yxxx_view.q_date  do
     begin   //0.0
     close;
     sql.clear;
     sql.Add('select distinct  pdate ');
     sql.add('from yxxx');
     sql.add('order by pdate');
     open;
     while not eof do
      begin //0.1
      _pdate:=fieldbyname('pdate').asdatetime;
      next;
      with dm_yxxx_view.q_fpxl do
        begin   //0.2
        close;
        open;
        while not eof do
          begin  //0.3
          _code:=fieldbyname('code').asstring;
          _linename:=fieldbyname('linename').asstring;
          _shifts:=fieldbyname('shift').asstring;
          with dm_yxxx_view.q_choose_point do
             begin    //选择该线路的点数
             close;
             parambyname('linename').asstring:=_linename;
             open;
             l_com:=recordcount;
             first ;
              if l_com>0 then
               begin //记录点数
                for i:=1 to l_com do
                 begin
                 number[i]:=fieldbyname('lseq').asinteger;
                 count[i]:=0;
                 next;
                end;
               end; // 记录点数
             end;   //   选择该线路的点数
          with dm_yxxx_view.q_choose_shifts do
             begin //选择班次,根据周期,确定循环次数
             close;
             parambyname('linename').asstring:=_linename;
             parambyname('shifts').asstring:=_shifts;
             open;
             l_begintime:=fieldbyname('firstp').asdatetime;
             l_endtime:= fieldbyname('lastp').asdatetime;
             _chkcycl:=fieldbyname('chkcycl').asinteger;
              n:=(_chkcycl)div(roundtime(l_begintime,l_endtime));
             end;  //选择班次,根据周期,确定循环次数
          with dm_yxxx_view.q_yxxx do
             begin //0.4   查询漏点、乱序、时间异常信息信息
             close;
             sql.clear;
             sql.add('select * from yxxx');
             sql.add('where pdate>=:_pdate1');
             sql.add('      and  pdate<=:_pdate2');
             sql.add('      and workercode=:code');
             sql.add('      and linename=:linename');
             sql.add('      and shifts=:shifts');
             parambyname('_pdate1').asdatetime:=_pdate-1;
             parambyname('_pdate2').asdatetime:=_pdate+1;
             parambyname('linename').asstring:=_linename;
             parambyname('shifts').asstring:=_shifts;
             parambyname('code').asstring:=_code;
             sql.add('order by pdate,workercode,linename,shifts,ptime,lseq');
             open;
             if recordcount=0 then
                begin    //写入漏检记录(该点没有巡逻);
                with dm_yxxx_view.q_yxxx_fl  do
                  begin
                  close;
                  open;
                  append;
                  fieldbyname('linename').asstring:=_linename;
                  fieldbyname('shifts').asstring:=_shifts;
                  fieldbyname('code').asstring:=_code;
                  fieldbyname('pdate').asdatetime:=_pdate;
                  fieldbyname('xxbs').asstring:='1';
                  fieldbyname('case').asstring:='没有巡逻';
                  post;
                  end; //
                  ldbs:=true;
                end// 写入漏检记录(该点没有巡逻);
                else
                 begin//检查漏点记录
                 first;
                 ldbs:=false;
                   while not eof do
                   begin  //1.0.0
                   for j:=1 to l_com do
                     begin //1.0
                      if number[j]=fieldbyname('lseq').asinteger then
                       begin//1.1
                       count[j]:=count[j]+1;
                       break;
                       end;//1.1
                      //next;
                     end;  //1.0
                     next;
                     end;//1.0.0
                   for i:=1 to l_com do
                     begin // 1.2
                      if count[i]<n  then
                        begin//找到漏点记录
                        ldbs:=true;
                        //lost_point:=number[i]
                         with dm_yxxx_view.q_choose_point  do
                          begin // 1.3
                           close;
                           open;
                          Locate('linename;lseq',vararrayOf([_linename,number[i]]),[loCaseInsensitive]);
                          lost_node:=fieldbyname('node').asstring;
                          lost_name:=fieldbyname('name').asstring;
                          lost_nodeplace:=fieldbyname('nodeplace').asstring;
                          lost_lseq:=fieldbyname('lseq').asinteger;
                          end;  // 1.3
                        with dm_yxxx_view.q_yxxx_fl  do
                          begin               //写入漏点记录
                          close;
                          open;
                          append;
                          fieldbyname('linename').asstring:=_linename;
                          fieldbyname('shifts').asstring:=_shifts;
                          fieldbyname('code').asstring:=_code;
                          fieldbyname('pdate').asdatetime:=_pdate;
                          fieldbyname('xxbs').asstring:='1';
                          fieldbyname('case').asstring:='该点漏检';
                          fieldbyname('node').asstring:=lost_node;
                          fieldbyname('nodeplace').asstring:=lost_nodeplace;
                          fieldbyname('lseq').asinteger:=lost_lseq;
                          fieldbyname('name').asstring:=lost_name;
                          post;
                          end; //写入漏点记录
                        end; //找到漏点记录

                   //else
                        //ldbs:=false;
                     end;  //  1.2
                 end; //检查漏点记录
               if  not ldbs   then
                 begin //检查乱序记录2.0
                 first;
                 l_cf_date:=fieldbyname('pdate').asdatetime;
                 l_cf_time:=fieldbyname('ptime').asdatetime;
                 l_cf_curs:=1;
                 l_cf_ifcon:=true;
                 l_cf_endrec:=0;
                 bookmark2:=getbookmark;//获取第一条记录位置
                 lxbs:=false;
                 while not eof do
                   begin //2.1
                   l_cf_lseq:=fieldbyname('lseq').asinteger;
                   if l_cf_lseq=l_cf_curs then
                    begin //2.2 判断是否按顺序巡更
                    if l_cf_lseq=1 then
                      begin //2.3     第一个点
                      l_cf_da:=fieldbyname('pdate').asdatetime;
                      l_cf_ti:=fieldbyname('ptime').asdatetime;
                      bookmark1:=getbookmark;
                      end;  //2.3   第一个点
                    if l_cf_lseq=l_com then
                      begin //2.4   最后一个点
                      l_cf_endt:=fieldbyname('ptime').asdatetime;
                      if not lxbs then
                      begin //4.3   写入完整、时间异常记录
                      //写入完整信息
                       with dm_yxxx_view.q_yxxx_fl do
                         begin//3.0
                         close;
                         open;
                         append;
                         fieldbyname('pdate').asdatetime:=_pdate;
                         fieldbyname('linename').asstring:=_linename;
                         fieldbyname('shifts').asstring:=_shifts;
                         fieldbyname('code').asstring:=_code;
                         fieldbyname('xxbs').asstring:='2';
                         fieldbyname('ptime').asdatetime:=l_cf_ti;
                         fieldbyname('endtime').asdatetime:=l_cf_endt;
                         post;
                         end; //3.0
                      //写入完整信息
                      bookmark3:=getbookmark;
                      //检查时间异常信息
                      gotobookmark(bookmark1);//跳到第一点
                      l_ci_lseq:=1;
                      l_ci_t1:=fieldbyname('ptime').asdatetime;
                      l_ci_d1:=fieldbyname('pdate').asdatetime;
                      //if l_ci_t1>fieldbyname('firstp').asdatetime+
                      next;
                      while l_ci_lseq<l_com do
                        begin //4.2
                        l_ci_lseq:=l_ci_lseq+1;
                        l_ci_t2:=fieldbyname('ptime').asdatetime;
                        l_ci_d2:=fieldbyname('pdate').asdatetime;
                        l_ci_time:=5555decdatetime(l_ci_d2,l_ci_t2,l_ci_d1,l_ci_t1);
                        if l_ci_time>(fieldbyname('ntime').asinteger+fieldbyname('dgpcxx').asinteger) then  //大于到干偏差下限为时间过长
                       //写入时间异常记录 -时间过长
                       with dm_yxxx_view.q_yxxx_fl do
                         begin
                         close;
                         open;
                         append;
                         edit;
                         fieldbyname('xxbs').asstring:='4';
                         fieldbyname('pdate').asdatetime:=l_ci_d2;
                         fieldbyname('ptime').asdatetime:=l_ci_t2;
                         fieldbyname('linename').asstring:=_linename;
                         fieldbyname('shifts').asstring:=_shifts;
                         fieldbyname('code').asstring:=_code;
                         fieldbyname('case').asstring:='(第'+inttostr(l_ci_lseq-1)+'到'+inttostr(l_ci_lseq)+'点) 时间间隔过长';
                         fieldbyname('conifo').asstring:=timetostr(l_ci_t1)+'---'+timetostr(l_ci_t2);
                         post;
                         end
                         else
                      //写入时间异常记录-时间过长
                       if l_ci_time<fieldbyname('ntime').asinteger-fieldbyname('dgpcsx').asinteger then //小于到岗时间偏差上限为时间过断
                     // 写入时间异常记录 -时间过断
                        with dm_yxxx_view.q_yxxx_fl do
                         begin
                         close;
                         open;
                         append;
                         edit;
                         fieldbyname('xxbs').asstring:='4';
                         fieldbyname('pdate').asdatetime:=l_ci_d2;
                         fieldbyname('ptime').asdatetime:=l_ci_t2;
                         fieldbyname('linename').asstring:=_linename;
                         fieldbyname('shifts').asstring:=_shifts;
                         fieldbyname('code').asstring:=_code;
                         fieldbyname('case').asstring:='(第'+inttostr(l_ci_lseq-1)+'到'+inttostr(l_ci_lseq)+'点) 时间间隔过短';
                         fieldbyname('conifo').asstring:=datetimetostr(l_ci_t1)+'---'+datetimetostr(l_ci_t2);
                         post;
                         end;
                    // 写入时间异常记录 -时间过断
                       l_ci_t1:=l_ci_t2;
                       l_ci_d1:=l_ci_t2;
                       next;
                       end;   //4.2
                       end;//4.3
                       gotobookmark(bookmark3);
                       freebookmark(bookmark3);
                      //检查时间异常信息
                      l_cf_curs:=1;
                      end//     2.4  最后一个点
                      else
                      l_cf_curs:=l_cf_curs+1;
                    end   //2.2 判断是否按顺序巡更
                    else
                    begin // 2.5 没按顺序
                    lxbs:=true;
                    l_cf_da:=fieldbyname('pdate').asdatetime;
                    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:=_linename;
                      fieldbyname('shifts').asstring:=_shifts;
                      fieldbyname('pdate').asdatetime:=_pdate;
                      fieldbyname('code').asstring:=_code;
                      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_curs:=2;
                         lxbs:=false;
                         //l_cf_da:=fieldbyname('pdate').asdatetime;
                         //l_cf_ti:=fieldbyname('ptime').asdatetime;
                         //lost_node:=fieldbyname('node').asstring;

⌨️ 快捷键说明

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