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

📄 hrunit1.~pas

📁 delphi开发的抄表数据管理系统
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
            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 + -