unit ZCT;
interface
uses
Business.System, Business.Model, Business.Forms, Business.Data;
type
TZCT = class(TForm)
FuncBroker: TFuncBroker;
InfoBrokerDD_LS_BBXX: TInfoBroker;
ControlBar: TControlBar;
DataNavigator: TDataNavigator;
DocViewBar: TDocViewBar;
Panel1: TPanel;
Panel5: TPanel;
Panel4: TPanel;
Panel3: TPanel;
Panel2: TPanel;
DataSetLC: TSQLDataSet;
DSB_LC: TDataSource;
DataGrid1: TDataGrid;
DataGrid1INST_ID: TDataGridColumn;
DataGrid1TBNR: TDataGridColumn;
DataGrid1TBSZ: TDataGridColumn;
DataGrid1DW: TDataGridColumn;
DataGrid1TBR: TDataGridColumn;
DataGrid1TBDW: TDataGridColumn;
DataGrid1TBSJ: TDataGridColumn;
DataGrid1TBDSRQ: TDataGridColumn;
DataGrid1KSSJ: TDataGridColumn;
DataGrid1JSSJ: TDataGridColumn;
DataGrid1TBLX: TDataGridColumn;
DataGrid1TBDWLX: TDataGridColumn;
DataGrid1TBNRLX: TDataGridColumn;
DataGrid1GLID: TDataGridColumn;
DateTimePicker1: TDateTimePicker;
BitBtn4: TBitBtn;
dsb220SJ: TDataSetBroker;
dsb220NR: TDataSetBroker;
procedure BizFormCreate(Sender: TObject);
procedure Panel2Click(Sender: TObject);
procedure Panel3Click(Sender: TObject);
procedure Panel4Click(Sender: TObject);
procedure Panel5Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
private
FDQRQ: TDateTime;
procedure GETSTARTTASKINF(FILTER:STRING);
procedure GETTBNRGLBlist(FILTER:STRING);
function SumData(TBDSRQ:String;INST_ID:String;TBNR:String;BZ:String):String;
function SumData1(TBDSRQ:String;INST_ID:String;TBNR:String;BZ:String):String;
{private declarations}
public
property DQRQ: TDateTime read FDQRQ write FDQRQ;
{public declarations}
end;
implementation
function TZCT.SumData1(TBDSRQ:String;INST_ID:String;TBNR:String;BZ:String):String;
Var
StrZdm,StrSql,StrY,StrM,StrD : string;
qry2 : TQuery;
begin
StrY:= SysUtils.FormatDateTime('yyyy',SysUtils.StrToDate(TBDSRQ));
StrM:= SysUtils.FormatDateTime('mm',SysUtils.StrToDate(TBDSRQ));
StrD:= SysUtils.FormatDateTime('dd',SysUtils.StrToDate(TBDSRQ));
if BZ='D' then
StrSql :=' to_char(TBDSRQ,''YYYY'')= '+StrY+' and to_char(TBDSRQ,''MM'')= '+StrM+' and to_char(TBDSRQ,''DD'')= '+StrD+''
else if BZ='Y' then
StrSql :=' to_char(TBDSRQ,''YYYY'')= '+StrY+' and to_char(TBDSRQ,''MM'')= '+StrM+' and to_char(TBDSRQ,''DD'')<= '+StrD+''
else if BZ='N' then
StrSql :=' (TBDSRQ between to_date('''+StrY+'-01-01'',''yyyy-mm-dd'') and to_date('''+TBDSRQ+''',''yyyy-mm-dd''))' ;//to_char(TBDSRQ,''YYYY'')= '+StrY+'
qry2:=TQuery.Create(nil);
qry2.ConnectionString:=BizObjConsts.cSysDatabaseConnectionString;
try
if TBNR<>'' then
begin
qry2.CommandText:='SELECT count(*) as TBSZ FROM TBSJB where '+StrSql+' and glid='+INST_ID+' and tbnr like ''%'+TBNR+''' order by inst_id desc';
end
else
begin
qry2.CommandText:='SELECT count(*) as TBSZ FROM TBSJB where '+StrSql+' and glid='+INST_ID+' order by inst_id desc';
end;
qry2.Open;
qry2.First;
if not qry2.IsEmpty then
begin
StrZdm := qry2.FieldByName('TBSZ').AsString;
end
else
begin
StrZdm := '0';
end;
finally
qry2.Free;
end;
if StrZdm='' then
StrZdm := '0';
Result := StrZdm;
end;
function TZCT.SumData(TBDSRQ:String;INST_ID:String;TBNR:String;BZ:String):String;
Var
StrZdm,StrSql,StrY,StrM,StrD : string;
qry2 : TQuery;
begin
StrY:= SysUtils.FormatDateTime('yyyy',SysUtils.StrToDate(TBDSRQ));
StrM:= SysUtils.FormatDateTime('mm',SysUtils.StrToDate(TBDSRQ));
StrD:= SysUtils.FormatDateTime('dd',SysUtils.StrToDate(TBDSRQ));
if BZ='D' then
StrSql :=' to_char(TBDSRQ,''YYYY'')= '+StrY+' and to_char(TBDSRQ,''MM'')= '+StrM+' and to_char(TBDSRQ,''DD'')= '+StrD+''
else if BZ='Y' then
StrSql :=' to_char(TBDSRQ,''YYYY'')= '+StrY+' and to_char(TBDSRQ,''MM'')= '+StrM+' and to_char(TBDSRQ,''DD'')<= '+StrD+''
else if BZ='N' then
StrSql :=' (TBDSRQ between to_date('''+StrY+'-01-01'',''yyyy-mm-dd'') and to_date('''+TBDSRQ+''',''yyyy-mm-dd''))' ;//to_char(TBDSRQ,''YYYY'')= '+StrY+'
qry2:=TQuery.Create(nil);
qry2.ConnectionString:=BizObjConsts.cSysDatabaseConnectionString;
try
if TBNR<>'' then
begin
qry2.CommandText:='SELECT sum(TBSZ) as TBSZ FROM TBSJB where '+StrSql+' and (TBSZ is not null) and glid='+INST_ID+' and tbnr like ''%'+TBNR+''' order by inst_id desc';
end
else
begin
qry2.CommandText:='SELECT sum(TBSZ) as TBSZ FROM TBSJB where '+StrSql+' and (TBSZ is not null) and glid='+INST_ID+' order by inst_id desc';
end;
qry2.Open;
qry2.First;
if not qry2.IsEmpty then
begin
StrZdm := qry2.FieldByName('TBSZ').AsString;
end
else
begin
StrZdm := '0';
end;
finally
qry2.Free;
end;
if StrZdm='' then
StrZdm := '0';
Result := StrZdm;//SysUtils.FormatFloat('0.00',SysUtils.StrToFloat(StrZdm));
end;
procedure TZCT.GETSTARTTASKINF(FILTER:STRING);
VAR sqltext:STRING;
BEGIN
sqltext := 'SELECT * FROM TBSJB WHERE TBDSRQ = :TBDSRQ and '+FILTER+'' ;
datasetLC.Active:=false;
datasetLC.SQL.Text:=sqltext;
datasetLC.Params.ParamByName('TBDSRQ').AsDate := FDQRQ;
datasetLC.Active:=true;
END;
procedure TZCT.GETTBNRGLBlist(FILTER:STRING);
VAR
sqltext,cCL,aaStr:STRING;
isStr: boolean;
ss : integer;
lQuery: TQuery;
arrStr : array of string;
BEGIN
TSQLDataSet(dsb220NR.DataSet).Close;
TSQLDataSet(dsb220NR.DataSet).SQL.Text := 'SELECT * FROM TBNRGLB WHERE '+FILTER+' ' ;
TSQLDataSet(dsb220NR.DataSet).Open;
if not TSQLDataSet(dsb220NR.DataSet).IsEmpty then
begin
TSQLDataSet(dsb220NR.DataSet).First ;
while not TSQLDataSet(dsb220NR.DataSet).Eof do
begin
if StrUtils.AnsiContainsText(FILTER,'出力') or StrUtils.AnsiContainsText(FILTER,'小水电电量') then
begin
if StrUtils.AnsiContainsText(FILTER,'出力') then
cCL := '出力'
else
cCL := '小水电电量';
lQuery := TQuery.Create(nil);
try
lQuery.Close;
lQuery.ConnectionString := 'DATABASEURL=Biz:\DMIS\DMISSJK.DATABASE';
lQuery.CommandText := ' SELECT FCONTENT FROM BDXXB WHERE FSCOPE ='''+cCL+''' ORDER BY FCONTENT';
lQuery.Open;
lQuery.First;
While not lQuery.Eof do
begin
with TSQLDataSet(dsb220SJ.DataSet) do
begin
if SumData1(sysutils.DateToStr(dateutils.DateOf(DateTimePicker1.Time)),dsb220NR.DataSet.FieldByName('INST_id').AsString,lQuery.Fields[0].AsString,'D')<>'0' then
edit
else
Append;
FieldByName('TBNR').AsString := dsb220NR.DataSet.FieldByName('TBNR').AsString+lQuery.Fields[0].AsString;
FieldByName('TBDW').AsString := dsb220NR.DataSet.FieldByName('TBDWMC').AsString;
FieldByName('TBLX').AsString :=dsb220NR.DataSet.FieldByName('TBLX').AsString;
FieldByName('TBNRLX').AsString :=dsb220NR.DataSet.FieldByName('TBNR').AsString;
FieldByName('GLID').AsInteger :=dsb220NR.DataSet.FieldByName('INST_id').AsInteger;
if(lQuery.Fields[0].AsString='水位')then
begin
FieldByName('DW').AsString :='米';
end
else if(lQuery.Fields[0].AsString='库容')then
begin
FieldByName('DW').AsString :='千立方米';
end
else if(StrUtils.AnsiContainsText(FILTER,'用电最高负荷'))then
begin
FieldByName('DW').AsString :='MW';
end
else if(StrUtils.AnsiContainsText(lQuery.Fields[0].AsString,'值'))then
begin
FieldByName('DW').AsString :='MW';
end
else
begin
FieldByName('DW').AsString :='万KWh';
end;
FieldByName('TBDSRQ').AsDateTime:=DateUtils.DateOf(DateTimePicker1.Time);
FieldByName('TBSZ').AsString := SumData(sysutils.DateToStr(dateutils.DateOf(DateTimePicker1.Time)),dsb220NR.DataSet.FieldByName('INST_id').AsString,lQuery.Fields[0].AsString,'D');
Post;
end; //with
lQuery.Next;
end;
finally
lQuery.Free;
end;
TSQLDataSet(dsb220SJ.DataSet).Filter :='TBDSRQ='+sysutils.DateToStr(dateutils.DateOf(DateTimePicker1.Time))+' and '+FILTER+' ';
TSQLDataSet(dsb220SJ.DataSet).Filtered := True;
TSQLDataSet(dsb220SJ.DataSet).Open;
DataGrid1.DataSource:=dsb220SJ;
end
else
begin
with TSQLDataSet(dsb220SJ.DataSet) do
begin
if SumData1(sysutils.DateToStr(dateutils.DateOf(DateTimePicker1.Time)),dsb220NR.DataSet.FieldByName('INST_id').AsString,'','D')<>'0' then
edit
else
Append;
FieldByName('TBNR').AsString :=dsb220NR.DataSet.FieldByName('TBNR').AsString;
FieldByName('TBDW').AsString := dsb220NR.DataSet.FieldByName('TBDWMC').AsString;
aaStr := FILTER.Replace('=','').Replace('''','').ToString;
ss := stringUtils.Pos('负荷',aaStr);
if stringUtils.Pos('负荷',FILTER) > 0 then
begin
FieldByName('DW').AsString :='MW' ;
end
else
begin
FieldByName('DW').AsString :='万KWh';
end;
FieldByName('TBLX').AsString :=dsb220NR.DataSet.FieldByName('TBLX').AsString;
FieldByName('TBDWLX').AsString :=dsb220NR.DataSet.FieldByName('TBDWLX').AsString;
FieldByName('GLID').AsInteger :=dsb220NR.DataSet.FieldByName('INST_id').AsInteger;
FieldByName('TBDSRQ').AsDateTime:=DateUtils.DateOf(DateTimePicker1.Time);
FieldByName('TBSZ').AsString := SumData(sysutils.DateToStr(dateutils.DateOf(DateTimePicker1.Time)),dsb220NR.DataSet.FieldByName('INST_id').AsString,'','D');
post;
end;//with
TSQLDataSet(dsb220SJ.DataSet).Filter :='TBDSRQ='+sysutils.DateToStr(dateutils.DateOf(DateTimePicker1.Time))+' and '+FILTER+' ';
TSQLDataSet(dsb220SJ.DataSet).Filtered := True;
TSQLDataSet(dsb220SJ.DataSet).Open;
DataGrid1.DataSource:=dsb220SJ;
end;
TSQLDataSet(dsb220NR.DataSet).Next ;
end;
end;
END;
procedure TZCT.BizFormCreate(Sender: TObject);
begin
DateTimePicker1.DateTime:=SysSrv.SysService.Time;
if not dsb220SJ.DataSet.Active then dsb220SJ.DataSet.Open ;
if not dsb220NR.DataSet.Active then dsb220NR.DataSet.Open ;
end;
procedure TZCT.Panel2Click(Sender: TObject);
begin
Panel2.Color:=$FAF8F6;
Panel3.Color:=$0e9b297;
Panel4.Color:=$0e9b297;
Panel5.Color:=$0e9b297;
FDQRQ := DateUtils.DateOf(DateTimePicker1.Time);
//GETSTARTTASKINF('TBLX=''电量''');
GETTBNRGLBlist('TBLX=''电量''');
end;
procedure TZCT.Panel3Click(Sender: TObject);
begin
Panel2.Color:=$0e9b297;
Panel3.Color:=$FAF8F6;
Panel4.Color:=$0e9b297;
Panel5.Color:=$0e9b297;
FDQRQ := DateUtils.DateOf(DateTimePicker1.Time);
//GETSTARTTASKINF('TBLX=''出力''');
GETTBNRGLBlist('TBLX=''出力''');
end;
procedure TZCT.Panel4Click(Sender: TObject);
begin
Panel2.Color:=$0e9b297;
Panel3.Color:=$0e9b297;
Panel4.Color:=$FAF8F6;
Panel5.Color:=$0e9b297;
FDQRQ := DateUtils.DateOf(DateTimePicker1.Time);
GETTBNRGLBlist('TBLX=''小水电电量''');
//GETSTARTTASKINF('TBLX=''小水电电量''');
end;
procedure TZCT.Panel5Click(Sender: TObject);
begin
Panel2.Color:=$0e9b297;
Panel3.Color:=$0e9b297;
Panel4.Color:=$0e9b297;
Panel5.Color:=$FAF8F6;
FDQRQ := DateUtils.DateOf(DateTimePicker1.Time);
//GETSTARTTASKINF('TBLX=''用电最高负荷''');
//GETTBNRGLBlist('用电最高负荷');
GETTBNRGLBlist('TBLX=''用电最高负荷''');
end;
procedure TZCT.BitBtn4Click(Sender: TObject);
begin
FDQRQ := DateUtils.DateOf(DateTimePicker1.Time);
{GETSTARTTASKINF('TBLX=''电量''');
GETSTARTTASKINF('TBLX=''出力''');
GETSTARTTASKINF('TBLX=''小水电电量''');
GETSTARTTASKINF('TBLX=''用电最高负荷'''); }
end;
end. |