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