📄 yxxx_view_pas.pas
字号:
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 + -