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

📄 dataanalyseformunit1.pas

📁 delphi开发的抄表数据管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
                temp:=temp+' GROUP BY 曲线数据表.注册号, 曲线数据表.本期指数, 曲线数据表.曲线数据, 当前数据表.计数轮 ';
                temp:=temp+' HAVING (曲线数据表.注册号 = '''+trim(edit5.Text)+''') AND (CONVERT(varchar(10), MIN(曲线数据表.设备上传时间), 21) = '''+formatdatetime('yyyy-mm-dd',strtodatetime(datetostr(incday(datetimepicker4.Date,1))))+''')';
                DataModule1.adoquery1.SQL.Clear;
                datamodule1.ADOQuery1.Filtered:=false;
                DataModule1.adoquery1.Close;
                DataModule1.adoquery1.SQL.Add(temp);
                DataModule1.adoquery1.Prepared;
                DataModule1.adoquery1.open;
                if DataModule1.adoquery1.RecordCount<>0 then
                begin
                    datasum:=0;
                    TranslateCurveDataOneVer(DataModule1.adoquery1.FieldValues['曲线数据'],DataModule1.adoquery1.FieldValues['计数轮'],curvedata);
                    for i:=0 to (strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2))+(24-strtoint(trim(ComboBox1.Text)))-1) do
                        datasum:=datasum+strtoint(curvedata[i]);
                    edit7.Text:=DataModule1.adoquery1.FieldValues['本期指数']-datasum;
                end;
            end
            else
            begin
                if DataModule1.adoquery1.RecordCount<>0 then
                begin
                    datasum:=0;
                    TranslateCurveDataOneVer(DataModule1.adoquery1.FieldValues['曲线数据'],DataModule1.adoquery1.FieldValues['计数轮'],curvedata);
                    for i:=0 to (strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2))-(strtoint(trim(ComboBox1.Text))+1)) do
                        datasum:=datasum+strtoint(curvedata[i]);
                    edit7.Text:=DataModule1.adoquery1.FieldValues['本期指数']-datasum;
                end;
            end;
        end
        else
        begin

        end;
    end
    else
    begin
        sqlstr:='select 注册号,设备类型,用户名称,本期指数,本期流量,人工读数,估收水量,问题标记,故障标记,上期指数,上期流量,停转时间,电池电压,计数轮,定点时间,设备上传时间,';
        sqlstr:=sqlstr+'设备当前时钟,数据来源,停转开始时间,当前时间,上传模式,区号,本号,牌号,抄表员号,设备ID号,地址,是否导出,备注 from 问题数据分析 where';
        if checkbox3.Checked then
           sqlstr:=sqlstr+ ' 区号='''+getNum(trim(combobox2.Text))+''' and ';
        if checkbox4.Checked then
           sqlstr:=sqlstr+ ' 本号='''+getNum(stringofchar('0',4-length(trim(combobox3.Text)))+trim(combobox3.Text))+''' and ';
        //if checkbox5.Checked then
           //sqlstr:=sqlstr+ ' 牌号='''+stringofchar('0',3-length(trim(combobox4.Text)))+trim(combobox4.Text)+''' and ';
        //if checkbox8.Checked then
           //sqlstr:=sqlstr+ ' 注册号='''+trim(edit5.Text)+''' and ';
        if checkbox8.Checked then
        begin
            if combobox10.Text='=' then
                sqlstr:=sqlstr+ ' 注册号='''+trim(edit5.Text)+''' and '
            else if combobox10.Text='LIKE' then
                sqlstr:=sqlstr+ ' 注册号 like '''+'%'+trim(edit5.Text)+'%'+''' and ';
        end;
        if checkbox9.Checked then
           sqlstr:=sqlstr+ ' 设备ID号='''+trim(edit8.Text)+''' and ';
        //if checkbox19.Checked then
           //sqlstr:=sqlstr+' 用户名称 like '''+'%'+trim(edit9.text)+'%'+''' and ';
        if checkbox19.Checked then
        begin
            if combobox11.Text='=' then
                sqlstr:=sqlstr+ ' 用户名称='''+trim(edit9.Text)+''' and '
            else if combobox11.Text='LIKE' then
                sqlstr:=sqlstr+ ' 用户名称 like '''+'%'+trim(edit9.Text)+'%'+''' and ';
        end;
        if checkbox20.Checked then
           sqlstr:=sqlstr+' 问题标记'+trim(combobox9.Text)+''''+trim(edit10.Text)+''' and ';
        if checkbox40.Checked then
           sqlstr:=sqlstr+' 故障标记'+trim(combobox25.Text)+''''+trim(edit19.Text)+''' and ';
        if checkbox21.Checked then
           sqlstr:=sqlstr+' 设备类型='''+trim(combobox13.Text)+''' and';
        if datetimepicker1.Checked then
           sqlstr:=sqlstr+' 设备上传时间>='''+formatdatetime('yyyy-mm-dd hh:nn:ss',strtodatetime(datetostr(datetimepicker1.Date)+' 00:00:00'))+''' and ';
        if datetimepicker2.checked then
           sqlstr:=sqlstr+' 设备上传时间<='''+formatdatetime('yyyy-mm-dd hh:nn:ss',strtodatetime(datetostr(datetimepicker2.Date)+' 23:59:59'))+''' and ';
        sqlstr:=sqlstr+ ' 设备ID号 like ''%'' order by 区号,抄表员号';
        adoquery1.Connection:=DataModule1.ADOConnection1;
        adoquery1.SQL.Clear;
        adoquery1.Filtered:=false;
        adoquery1.Close;
        adoquery1.SQL.Add(sqlstr);
        adoquery1.Prepared;
        adoquery1.open;
        self.Caption:='检索数据'+'['+inttostr(adoquery1.RecordCount)+'条'+']';
    end;
  except
    on e:exception do
    begin

    end;
  end;
end;

procedure TDataAnalyseForm.CheckBox8Click(Sender: TObject);
begin
    if checkbox8.Checked then
    begin
        edit5.Enabled:=true;
        combobox10.Enabled:=true;
    end
    else
    begin
        edit5.Text:='';
        edit5.Enabled:=false;
        combobox10.Text:='';
        combobox10.Enabled:=false;
    end;
end;

procedure TDataAnalyseForm.CheckBox3Click(Sender: TObject);
begin
    if checkbox3.Checked then
        combobox2.Enabled :=true
    else
    begin
        combobox2.Text:='';
        combobox2.Enabled :=false;
    end;
end;

procedure TDataAnalyseForm.CheckBox4Click(Sender: TObject);
begin
    if checkbox4.Checked then
        combobox3.Enabled :=true
    else
    begin
        combobox3.Text:='';
        combobox3.Enabled :=false;
    end;
end;

procedure TDataAnalyseForm.CheckBox9Click(Sender: TObject);
begin
    if checkbox9.Checked then
        edit8.Enabled:=true
    else
    begin
        edit8.Text:='';
        edit8.Enabled:=false;
    end;
end;

procedure TDataAnalyseForm.CheckBox10Click(Sender: TObject);
begin
    if checkbox10.Checked then
    begin
        datetimepicker4.Enabled:=true;
        combobox1.Enabled:=true;
    end
    else
    begin
        datetimepicker4.Enabled:=false;
        combobox1.Enabled:=false;
    end;
end;

function  TDataAnalyseForm.TranslateCurveDataOneVer(originadata:string; jsl:double; var curvedata:array of string):integer;
var
    j,k,m,n,p:integer;
    temp1:string;
    //temp,temp1,IctuState,Seat,upy,upw,upm,upd,uph,upf,ups,DailTimeH,DailTimeF,IctuNoL,IctuNoH,startdatetimeH,startdatetimeF:string;
    dangl,factor:double;
begin
  try
    //***********curvedata************
    j:=1;
    k:=0;
    dangl:=jsl*10;
    factor:=jsl*10;
    //temp:=midstr(devicedata,139,288);
    while (j<length(originadata)) do
    begin
        curvedata[k]:=midstr(originadata,j,4);
        if curvedata[k]='FFFF' then
        begin
            if (k=0) and (curvedata[k]='FFFF') then
               temp1:='0'
            else
               temp1:=curvedata[k-1];
            m:=j;
            n:=1;
            repeat
                 inc(n);
                 m:=m+4;
            until midstr(originadata,m,4)<>'FFFF';
            if k=0 then
            begin
                curvedata[k]:=formatfloat('0',strtoint64(temp1));
                inc(k);
                j:=j+4;
            end
            else
            begin
                for p:=1 to n do
                begin
                    curvedata[k-1]:=formatfloat('0',strtoint64(temp1)/n);
                    inc(k);
                    j:=j+4;
                end;
                k:=k-1;
                j:=j-4;
            end;
        end
        else
        begin
            if dangl<10 then
                curvedata[k]:=formatfloat('0',strtoint64('x'+curvedata[k])* factor/2)
            else
                curvedata[k]:=formatfloat('0',(strtoint64('x'+curvedata[k])*factor/2)/10*10);
            inc(k);
            j:=j+4;
        end;
    end;
    result:=1;
    //************IctuNo**************
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

function  TDataAnalyseForm.TranslateCurveDatawctu(originadata:string; jsl:double; var curvedatawctu:array of string):integer;
var
    j,k,m,n,p:integer;
    temp1:string;
    dangl,factor:double;
    temp:array[0..1] of string;
begin
  try
    //***********curvedata************
    j:=1;
    k:=0;
    dangl:=jsl*10;
    factor:=jsl*10;
    while (j<length(originadata)) do
    begin
        //******************************************************************************************
        //*curvedatawctu[k]:=rightstr(midstr(originadata,j,4),2)+leftstr(midstr(originadata,j,4),2);*
        //******************************************************************************************
        curvedatawctu[k]:=midstr(originadata,j,4);
        if curvedatawctu[k]='FFFF' then
        begin
            if (k=0) and (curvedatawctu[k]='FFFF') then
               temp1:='0'
            else
               temp1:=curvedatawctu[k-1];
            m:=j;
            n:=1;
            repeat
                 inc(n);
                 m:=m+4;
            until midstr(originadata,m,4)<>'FFFF';
            if k=0 then
            begin
                curvedatawctu[k]:=formatfloat('0',strtoint64(temp1));
                inc(k);
                j:=j+4;
            end
            else
            begin
                for p:=1 to n do
                begin
                    curvedatawctu[k-1]:=formatfloat('0',strtoint64(temp1)/n);
                    inc(k);
                    j:=j+4;
                end;
                k:=k-1;
                j:=j-4;
            end;
        end
        else
        begin
            if dangl<10 then
                curvedatawctu[k]:=formatfloat('0',strtoint64('x'+curvedatawctu[k])* factor/2)
            else
                curvedatawctu[k]:=formatfloat('0',(strtoint64('x'+curvedatawctu[k])*factor/2)/10*10);
            inc(k);
            j:=j+4;
        end;
    end;
    result:=1;
    //************IctuNo**************
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

function  TDataAnalyseForm.GetCurveDay(userno,yearstr,monthstr,daystr:string; var curveday:array of string):integer;
var
   temp:string;
   i,j:integer;
begin
  try
    temp:='SELECT 曲线数据表.注册号, MIN(曲线数据表.设备上传时间) AS 设备上传时间,曲线数据表.本期指数, 当前数据表.计数轮, MIN(曲线数据表.曲线开始时间) AS 曲线开始时间, 曲线数据表.曲线数据 ';
    temp:=temp+' FROM 曲线数据表 INNER JOIN 当前数据表 ON 曲线数据表.注册号 = 当前数据表.注册号 ';
    temp:=temp+' GROUP BY 曲线数据表.注册号, 曲线数据表.本期指数, 曲线数据表.曲线数据, 当前数据表.计数轮 ';
    temp:=temp+' HAVING (曲线数据表.注册号 = '''+trim(userno)+''') AND (CONVERT(varchar(10), MIN(曲线数据表.设备上传时间), 21) = '''+formatdatetime('yyyy-mm-dd',incday(strtodate(trim(yearstr)+'-'+trim(monthstr)+'-'+trim(daystr)),1))+''')';
    DataModule1.adoquery1.Connection:=DataModule1.ADOConnection1;
    DataModule1.adoquery1.SQL.Clear;
    DataModule1.ADOQuery1.Filtered:=false;
    DataModule1.adoquery1.Close;
    DataModule1.adoquery1.SQL.Add(temp);
    DataModule1.adoquery1.Prepared;
    DataModule1.adoquery1.open;
    if DataModule1.adoquery1.RecordCount<>0 then
    begin

⌨️ 快捷键说明

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