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