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

📄 dataanalyseformunit1.pas

📁 delphi开发的抄表数据管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
        //j:=23;
        j:=24;
        TranslateCurveDataOneVer(DataModule1.adoquery1.FieldValues['曲线数据'],DataModule1.adoquery1.FieldValues['计数轮'],curvedata);
        //for i:=0 to 23 do
        for i:=0 to 24 do
        begin
            curveday[i]:=curvedata[j+strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2))-1];
            j:=j-1;
        end;
    end
    else
    begin
        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)),2))+''')';
        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
            //j:=47;
            j:=48;  //2005-12-06
            TranslateCurveDataOneVer(DataModule1.adoquery1.FieldValues['曲线数据'],DataModule1.adoquery1.FieldValues['计数轮'],curvedata);
            for i:=0 to 24 do
            //for i:=0 to 23 do  //2005-12-06
            begin
                curveday[i]:=curvedata[j+strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2))];
                j:=j-1;
            end;
        end
        else
        begin
            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',strtodate(trim(yearstr)+'-'+trim(monthstr)+'-'+trim(daystr)))+''')';
            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
                TranslateCurveDataOneVer(DataModule1.adoquery1.FieldValues['曲线数据'],DataModule1.adoquery1.FieldValues['计数轮'],curvedata);
                for i:=0 to (strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2))-1) do
                    curveday[i]:=curvedata[strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2))-1-i];
                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)),3))+''')';
                DataModule1.adoquery2.Connection:=DataModule1.ADOConnection1;
                DataModule1.adoquery2.SQL.Clear;
                DataModule1.ADOQuery2.Filtered:=false;
                DataModule1.adoquery2.Close;
                DataModule1.adoquery2.SQL.Add(temp);
                DataModule1.adoquery2.Prepared;
                DataModule1.adoquery2.open;
                if DataModule1.adoquery2.RecordCount <>0 then
                begin
                    j:=0;
                    TranslateCurveDataOneVer(DataModule1.adoquery2.FieldValues['曲线数据'],DataModule1.adoquery2.FieldValues['计数轮'],curvedata);
                    for i:=strtoint(rightstr(DataModule1.adoquery2.FieldValues['曲线开始时间'],2))to 24 do //2005-12-06
                    //for i:=strtoint(rightstr(DataModule1.adoquery2.FieldValues['曲线开始时间'],2))to 23 do
                    begin
                        curveday[i]:=curvedata[71-j];
                        inc(j);
                    end;
                end
                else
                begin
                    //for i:=strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2)) to 23 do  //2005-12-06
                        //curveday[i]:=inttostr(0);
                    for i:=strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2)) to 24 do
                        curveday[i]:='';
                end;
            end
            else
            begin
                //for i:=0 to 23 do  //2005-12-06
                    //curveday[i]:=inttostr(0);
                for i:=0 to 24 do
                    curveday[i]:='';
            end;
        end;
    end;
    result:=1;
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

function  TDataAnalyseForm.GetCurveDayWctu(userno,yearstr,monthstr,daystr:string; var curveday:array of string):integer;
var
    temp:string;
    i,j,k:integer;
    dangl:real;
    tempfj:Variant;
    cureflag:boolean;
begin
  try
    cureflag:=false;
    for k:=1 to 37 do
    begin
        temp:='select * from 曲线数据表 where (注册号 = '''+trim(userno)+''') AND(CONVERT(varchar(10),设备上传时间, 21) = '''+formatdatetime('yyyy-mm-dd',incday(strtodate(trim(yearstr)+'-'+trim(monthstr)+'-'+trim(daystr)),k))+''') and (设备类型=''WCTU'')' ;
        DataModule1.adoquery1.Connection:=DataModule1.ADOConnection1;
        DataModule1.adoquery1.SQL.Clear;
        DataModule1.adoquery1.Close;
        DataModule1.adoquery1.Filtered:=false;
        DataModule1.adoquery1.SQL.Add(temp);
        DataModule1.adoquery1.Prepared;
        DataModule1.adoquery1.open;
        if DataModule1.adoquery1.RecordCount<>0 then
        begin
            cureflag:=true;
            tempfj:=midstr(DataModule1.adoquery1.FIELDbyname('设备ID号').AsString,7,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;
            tempfj:=floattostr(dangl * 0.1); //计数轮
            //j:=(k-1)*24+23;
            j:=(37-k)*24;
            TranslateCurveDataWctu(DataModule1.adoquery1.FieldValues['曲线数据'],tempfj,curvedatawctu);
            //for i:=0 to 23 do
            for i:=0 to 24 do
            begin
                curveday[i]:=curvedatawctu[j+(23-strtoint(rightstr(DataModule1.adoquery1.FieldValues['曲线开始时间'],2)))];
                //j:=j-1;
                j:=j+1;
            end;
            break;
        end;
    end;
    if not cureflag then
    begin
        application.MessageBox('无可用数据,可供绘制曲线!','提示',mb_iconinformation);
        exit;
    end;
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

function  TDataAnalyseForm.GetCurveMonth(userno,yearstr,monthstr:string;var curvemonth:array of string):integer;
var
    //temp:string;
    i,j,k,sumday:integer;
    year,month,day:word;
begin
  try
    //获得天数j;
    case strtoint(monthstr) of
      1,3,5,7,8,10,12:
        j:=31;
      4,6,9,11:
        j:=30;
      2:
        begin
            if isleapyear(strtoint(yearstr)) then
                j:=29
            else
                j:=28;
        end;
    end;
    sumday:=0;
    for i:=0 to (j-1) do
    begin
        decodedate(incday(strtodate(trim(yearstr)+'-'+trim(monthstr)+'-'+'01'),i),year,month,day);
        getcurveday(userno,inttostr(year),inttostr(month),inttostr(day),curveday);
        for k:=1 to 24 do
            sumday:=sumday+strtoint(curveday[k-1]);
        curvemonth[i]:=inttostr(sumday);
        sumday:=0;
    end;
    result:=1;
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

function TDataAnalyseForm.GetCurveWeek(userno,yearstr,monthstr,daystr:string;var curveweek:array of string):integer;
var
    i,j,sumweek:integer;
    year,month,day:word;
begin
  try
    for i:=0 to 6 do
    begin
        decodedate(incday(strtodate(trim(yearstr)+'-'+trim(monthstr)+'-'+trim(daystr)),i),year,month,day);
        getcurveday(userno,inttostr(year),inttostr(month),inttostr(day),curveday);
        sumweek:=0;
        for j:=1 to 24 do
            sumweek:=sumweek+strtoint(curveday[j-1]);
        curveweek[i]:=inttostr(sumweek);
        sumweek:=0;
    end;
    result:=1;
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

function  TDataAnalyseForm.GetCurveyear(userno,yearstr:string;var curveyear:array of string):integer;
var
    //temp:string;
    i,k,summonth:integer;
    year,month,day:word;
begin
  try
    summonth:=0;
    for i:=0 to 11 do
    begin
        decodedate(incmonth(strtodate(trim(yearstr)+'-'+'01'+'-'+'01'),i),year,month,day);
        getcurvemonth(userno,inttostr(year),inttostr(month),curvemonth);
        summonth:=0;
        for k:=1 to 31 do
        begin
            if curvemonth[k-1]<>'' then
               summonth:=summonth+strtoint(curvemonth[k-1])
            else
               break;
        end;
        curveyear[i]:=inttostr(summonth);
        summonth:=0;
    end;
    result:=1;
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

function  TDataAnalyseForm.GetCurveQuarter(userno,yearstr:string;var curvequarter:array of string):integer;
var
    i,j,k,summonth:integer;
begin
  try
    getcurveyear(userno,yearstr,curveyear);
    summonth:=0;
    k:=0;
    for i:=0 to 3 do
    begin
        for j:=0 to 2 do
        begin
            summonth:=summonth+strtoint(curveyear[k]);
            inc(k);
        end;
        curvequarter[i]:=inttostr(summonth);
        summonth:=0;
    end;
    result:=1;
  except
    on e:exception do
    begin
        result:=0;
    end;
  end;
end;

procedure TDataAnalyseForm.N10Click(Sender: TObject);
//var
    //eclApp,WorkBook,sheet:Variant;{声明为OLE Automation对象}
    //i,j:integer;
begin
    {try
      eclApp:=CreateOleObject('Excel.Application');
    except
      ShowMessage('您的机器里未安装Microsoft Excel.');
      Exit;
    end;

    if adoquery1.RecordCount <>0 then
    begin
        eclApp.WorkBooks.Add(extractfilepath(application.ExeName)+'\temp1.xls');
        workbook:=eclapp.workbooks[1];
        sheet:=workbook.ActiveSheet;
        eclApp.displayAlerts:=false;
        eclApp.ScreenUpdating:=true;
        j:=1;
        for i:=1 to adoquery1.RecordCount do
        begin
            sheet.cells[j+1,1].value:=trim(adoquery1.FieldValues['注册号']);
            sheet.cells[j+1,2].value:=trim(ADOQuery1.FieldValues['用户名称']);

⌨️ 快捷键说明

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