📄 hrunit1.~pas
字号:
DataModule1.adocommand1.Execute;
end;
DataModule1.adocommand1.Connection :=datamodule1.ADOConnection1;
DataModule1.adocommand1.commandtext:='update 当前数据表 set 计数轮='+tempstr[2]+' where 注册号='''+tempstr[1]+'''';
DataModule1.adocommand1.Execute;
end;
closefile(fnum1);
Screen.Cursors[crMyCursor]:=crdefault;
Screen.Cursor:=crdefault;
result:=1;
except
on e:exception do
begin
result:=0;
closefile(fnum1);
Screen.Cursors[crMyCursor]:=crdefault;
Screen.Cursor:=crdefault;
exit;
end;
end;
end;
//******************************************************************************
function Parse38DayHourCurveData:integer;stdcall
var
fromf:file;
NumRead, NumWritten,j,i: Integer;
temp:string;
tempstr:array[1..4] of string;
tempfj:Variant;
dangl:real;
Buf: array[0..1858] of Char;
ch:char;
begin
try
assignfile(FromF,extractfilepath(application.ExeName) + 'Data\cIM_CUB.dbf');
reset(FromF,1);
if FileSize(FromF) mod 1859 <>0 then
begin
messagedlg('上传曲线数据文件大小有误,操作被终止!',mterror,[mbok],0);
closefile(fromf);
exit;
end;
j:=0;
repeat
application.ProcessMessages;
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
inc(j);
application.ProcessMessages;
screen.Cursors[crMyCursor]:=LoadCursorFromFile('bgwork.ani');
screen.Cursor :=crMyCursor;
i:=0;
temp:='';
repeat
temp:=temp+buf[i];
inc(i);
until i=sizeof(buf);
//showmessage(inttostr(length(temp)));
//tempstr[1]:=trim(midbstr(temp,1,16)); //注册号
tempstr[1]:=trim(leftbstr(trim(midbstr(temp,1,16)),length(trim(midbstr(temp,1,16)))-1))+rightbstr(trim(midbstr(temp,1,16)),1);
tempfj:=trim(midbstr(temp,17,1));
if tempfj='D' then
dangl:=0.01
else if tempfj='E' then
dangl:=0.1
else if tempfj='F' then
dangl:=1.0
else if tempfj='0' then
dangl:=10
else if tempfj='1' then
dangl:=100;
tempstr[2]:=floattostr(dangl * 0.1); //计数轮
tempstr[3]:=formatdatetime('yyyy-mm-dd',strtodatetime(midbstr(temp,26,2)+'-'+midbstr(temp,28,2)+'-'+midbstr(temp,30,2)))+'/'+formatdatetime('hh',inchour(strtodatetime(trim(midbstr(temp,26,2))+'-'+trim(midbstr(temp,28,2))+'-'+trim(midbstr(temp,30,2))+stringofchar(char(32),1)+trim(midbstr(temp,32,2))+':00:01'),-1));
tempstr[4]:=extractcure(midbstr(temp,34,1824));
DataModule1.adoquery4.Connection :=datamodule1.ADOConnection1;
DataModule1.adoquery4.SQL.Clear;
DataModule1.ADOQuery4.Filtered:=false;
DataModule1.adoquery4.Close;
DataModule1.adoquery4.SQL.Add('select * from 设备信息表 where 注册号='''+tempstr[1]+'''');
DataModule1.adoquery4.Prepared;
DataModule1.adoquery4.open;
if datamodule1.ADOQuery4.RecordCount <>0 then
begin
DataModule1.adocommand1.Connection :=datamodule1.ADOConnection1;
DataModule1.adocommand1.commandtext:='insert into 曲线临时表 (设备ID号,注册号,设备上传时间,曲线开始时间,曲线数据,设备类型) values('''+trim(datamodule1.ADOQuery4.fieldbyname('设备ID号').AsString)+''','''+trim(tempstr[1])+''','''+formatdatetime('yyyy-mm-dd hh:nn:ss',strtodatetime(leftstr(trim(tempstr[3]),10)+stringofchar(char(32),1)+'00:00:01'))+''','''+tempstr[3]+''','''+tempstr[4]+''','''+trim(datamodule1.ADOQuery4.fieldbyname('设备类型').AsString)+''')';
DataModule1.adocommand1.Execute;
end
else
begin
DataModule1.adocommand1.Connection :=datamodule1.ADOConnection1;
DataModule1.adocommand1.commandtext:='insert into 曲线临时表 (设备ID号,注册号,设备上传时间,曲线开始时间,曲线数据,设备类型) values(''未知'','''+trim(tempstr[1])+''','''+formatdatetime('yyyy-mm-dd hh:nn:ss',strtodatetime(leftstr(trim(tempstr[3]),10)+stringofchar(char(32),1)+'00:00:01'))+''','''+tempstr[3]+''','''+tempstr[4]+''',''未知'')';
DataModule1.adocommand1.Execute;
end;
DataModule1.adocommand1.Connection :=datamodule1.ADOConnection1;
DataModule1.adocommand1.commandtext:='update 当前数据表 set 计数轮='+tempstr[2]+' where 注册号='''+tempstr[1]+'''';
DataModule1.adocommand1.Execute;
until j=FileSize(FromF) div 1859;
closefile(FromF);
result:=1;
Screen.Cursors[crMyCursor]:=crdefault;
Screen.Cursor:=crdefault;
except
on e:exception do
begin
result:=0;
closefile(FromF);
Screen.Cursors[crMyCursor]:=crdefault;
Screen.Cursor:=crdefault;
exit;
end;
end;
end;
//保存数据 TUpDataForm.Button5Click
procedure saveData;
var
i,j:integer;
sqlstr:string;
tranflg:boolean;
begin
try
tranflg:=false;
DataModule1.ADOQuery1.Connection :=datamodule1.ADOConnection1;
datamodule1.ADOConnection1.BeginTrans;
tranflg:=true;
DataModule1.adoquery1.SQL.Clear;
DataModule1.ADOQuery1.Filtered:=false;
DataModule1.adoquery1.Close;
DataModule1.adoquery1.SQL.Add('SELECT DISTINCT 注册号 AS 注册号, MAX(设备上传时间) AS 设备上传时间 FROM 临时数据表 GROUP BY 注册号'); //SELECT DISTINCT 注册号 AS 注册号, MAX(设备上传时间) AS 设备上传时间 FROM 临时数据表 GROUP BY 注册号
DataModule1.adoquery1.Prepared;
DataModule1.adoquery1.Open ;
for i:=1 to DataModule1.adoquery1.RecordCount do
begin
application.ProcessMessages;
DataModule1.ADOQuery2.Connection :=datamodule1.ADOConnection1;
DataModule1.ADOQuery2.SQL.Clear;
DataModule1.ADOQuery2.Filtered:=false;
DataModule1.ADOQuery2.Close;
DataModule1.ADOQuery2.SQL.Add('select top 1 * from 临时数据表 where 注册号='''+DataModule1.ADOQuery1.FieldValues['注册号']+''' and 设备上传时间='''+formatdatetime('yyyy-mm-dd hh:nn:ss',DataModule1.ADOQuery1.FieldValues['设备上传时间'])+''' order by 本期指数 desc;');
DataModule1.adoquery2.Prepared;
DataModule1.adoquery2.open;
DataModule1.ADOQuery3.Connection:=datamodule1.ADOConnection1;
DataModule1.ADOQuery3.SQL.Clear;
DataModule1.ADOQuery3.Filtered:=false;
DataModule1.ADOQuery3.Close;
DataModule1.ADOQuery3.SQL.Add('select * from 当前数据表 where 注册号='''+DataModule1.adoquery1.FieldValues['注册号']+'''');
DataModule1.adoquery3.Prepared;
DataModule1.adoquery3.Open;
if DataModule1.adoquery3.RecordCount <> 0 then
begin
if DataModule1.adoquery3.FieldValues['设备上传时间'] < DataModule1.adoquery1.FieldValues['设备上传时间'] then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -