
2094
.pdfПродолжение прил. 1
MainMenu1: TMainMenu;
N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N8: TMenuItem; N9: TMenuItem; N7: TMenuItem; N10: TMenuItem; N20: TMenuItem; N21: TMenuItem; N23: TMenuItem;
Panel1: TPanel; Panel2: TPanel; Panel4: TPanel; Panel5: TPanel; Panel6: TPanel;
Chart1: TChart; DBChart5: TDBChart;
Series1: TPieSeries; BarSeries9: TBarSeries; BarSeries11: TBarSeries; DBChart6: TDBChart; DBChart7: TDBChart; DBChart1: TDBChart; Series2: TBarSeries; Series3: TBarSeries; BarSeries7: TBarSeries; BarSeries8: TBarSeries;
Label7: TLabel; Label5: TLabel; Label6: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label1: TLabel; Label2: TLabel; Label19: TLabel; Label20: TLabel;
ComboBox1: TComboBox; ComboBox2: TComboBox; DateTimePicker2: TDateTimePicker; DateTimePicker1: TDateTimePicker; N11: TMenuItem; N12: TMenuItem;
Chart2: TChart; Chart3: TChart; Chart4: TChart;
Series4: TBarSeries; Series5: TBarSeries; Series6: TBarSeries; Series7: TBarSeries; Series8: TBarSeries; Series9: TBarSeries; Button1: TButton;
procedure N4Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N23Click(Sender: TObject); procedure N21Click(Sender: TObject); procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); function SumRasxod(Stroka:string):real;
procedure AvtoPererasxod;
procedure ComboBox1Click(Sender: TObject); procedure OneAvtoRasxod(Nom:integer); procedure FormCreate(Sender: TObject); procedure Create_Alias(MyAlias:string); private
231
Продолжение прил. 1
{Private declarations } public
{Public declarations } end;
var
FormAvtoMain: TFormAvtoMain;
Period:integer; T_KMAll,UdRasxodAll,UdRasxodAllNorma,RasxodAll,RasxodAllNorma:
array[1..366] of real; implementation
uses AvtoOne2, AvtoDvigateli, AvtoVoditeli, AvtoSpravka, AvtoAtribut, AvtoPut_List, AvtoModul;
{$R *.DFM}
procedure TFormAvtoMain.N4Click(Sender: TObject); begin
FormAvtoSpravka.ShowModal;
end;
procedure TFormAvtoMain.N6Click(Sender: TObject); begin
FormAvtoDvigateli.ShowModal;
end;
procedure TFormAvtoMain.N10Click(Sender: TObject); begin
FormAvtoVoditeli.ShowModal;
end;
procedure TFormAvtoMain.N8Click(Sender: TObject); begin
FormAvtoOne2.ShowModal;
end;
procedure TFormAvtoMain.N23Click(Sender: TObject); begin
FormAvtoAtribut.ShowModal;
end;
procedure TFormAvtoMain.N21Click(Sender: TObject); begin
FormAvtoPut_List.ShowModal; end;
procedure TFormAvtoMain.FormActivate(Sender: TObject); var L,i,code:integer;
Y,Reit:real;
232
Продолжение прил. 1
param1:string; begin
Create_Alias('dbAvto_S');
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1 do begin
RasxodAll[i]:=0;
RasxodAllNorma[i]:=0;
UdRasxodAll[i]:=0;
UdRasxodAllNorma[i]:=0; T_KMAll[i]:=0;
end;
DataModule1.Table5.Open;
AvtoPererasxod; With Series1 do begin
Clear;
AddPie(SumRasxod('Расход горючего-факт'),'Факт',clTeeColor); AddPie(SumRasxod('Расход горючего -норма'),'Норма',clTeeColor); end;
OneAvtoRasxod(0);
with DataModule1.Query2 do begin
If Active then Close; SQL.Clear;
SQL.Add('Select * from PUTLIST where PUTLIST."Дата" between "'+DateToStr(DateTimePicker1.Date)+'" and"'+ DateToStr(DateTimePicker2.Date)+'"');
Prepare;
Open;
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1 do begin
First;
while Eof=False do begin
If (FieldByName('Дата').AsDateTime=Trunc(DateTimePicker1.Date)+i-1)
and
(FieldByName('Расход горючего -норма').AsFloat<>0) then begin
233
Продолжение прил. 1
RasxodAll[i]:=RasxodAll[i]+FieldByName('Расход горючегофакт').AsInteger;
RasxodAllNorma[i]:=RasxodAllNorma[i]+FieldByName('Расход горючего -норма').AsFloat;
T_KMAll[i]:=T_KMAll[i]+FieldByName('Всего тонно-км').AsFloat end;
Next;
end;
if T_KMAll[i]<>0 then begin
UdRasxodAll[i]:=RasxodAll[i]/T_KMAll[i]; UdRasxodAllNorma[i]:=RasxodAllNorma[i]/T_KMAll[i]; end
else begin
UdRasxodAll[i]:=0;
UdRasxodAllNorma[i]:=0;
end;
end;
end;
With Series4 do begin
Clear;
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1
do
AddBar(RasxodAll[i],DateToStr(Trunc(DateTimePicker1.Date)+i- 1),clTeeColor);
end;
With Series5 do begin
Clear;
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1 do AddBar(RasxodAllNorma[i],DateToStr(Trunc(DateTimePicker1.Date)+i-
1),clTeeColor);
end;
With Series6 do begin
Clear;
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1 do
234
Продолжение прил. 1
AddBar(UdRasxodAll[i],DateToStr(Trunc(DateTimePicker1.Date)+i- 1),clTeeColor);
end;
With Series7 do begin
Clear;
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1
do
AddBar(UdRasxodAllNorma[i],DateToStr(Trunc(DateTimePicker1.Date)+i- 1),clTeeColor);
end;
With Series8 do begin
Clear;
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1 do Add-
Bar(UdRasxodAll[i]*ro*Emd,DateToStr(Trunc(DateTimePicker1.Date)+i- 1),clTeeColor);
end;
With Series9 do begin
Clear;
for i:=1 to Trunc(DateTimePicker2.Date)-Trunc(DateTimePicker1.Date)+1 do Add-
Bar(UdRasxodAllNorma[i]*ro*Emd,DateToStr(Trunc(DateTimePicker1.Date)+ i-1),clTeeColor);
end;
end;
function TFormAvtoMain.SumRasxod(Stroka:string):real; begin
Result:=0;
DataModule1.Table5.First;
while DataModule1.Table5.Eof=False do begin
If (DataModule1.Table5.FieldByName('Дата').AsDateTime>=DateTimePicker1.Date) and
(DataModule1.Table5.FieldByName('Дата').AsDateTime<=DateTimePicker2.Date) then
235
Продолжение прил. 1
Result:=Result+DataModule1.Table5.FieldByName(Stroka).AsFloat; DataModule1.Table5.Next;
end;
end;
procedure TFormAvtoMain.AvtoPererasxod; var otnoshenie:real;
i,j:integer; begin i:=0; j:=0;
ComboBox1.Clear; ComboBox2.Clear; DataModule1.Table5.First;
while DataModule1.Table5.Eof=False do begin
If (DataModule1.Table5.FieldByName('Дата').AsDateTime>=DateTimePicker1.Date) and
(DataModule1.Table5.FieldByName('Дата').AsDateTime<=DateTimePicker2.Date) then
begin
if DataModule1.Table5.FieldByName('Расход горючего - норма').AsFloat<>0 then
otnoshenie:=DataModule1.Table5.FieldByName('Расход горючегофакт').AsInteger/DataModule1.Table5.FieldByName('Расход горючего - норма').AsFloat
else otnoshenie:=0; If otnoshenie>1 then begin
omboBox1.Items[i]:=DataModule1.Table5.FieldByName('Госномер автомобиля').AsString+'-'+ DataModule1.Table5.FieldByName('Дата').AsString;
inc(i);
end;
If otnoshenie=0 then begin
ComboBox2.Items[j]:=DataModule1.Table5.FieldByName('Госномер автомобиля').AsString+'-'+
DataModule1.Table5.FieldByName('Дата').AsString; inc(j);
end;
end;
236
Продолжение прил. 1
DataModule1.Table5.Next;
end;
end;
procedure TFormAvtoMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Series1.Clear; Series2.Clear; Series3.Clear; Series4.Clear; Series5.Clear; Series6.Clear; Series7.Clear; Series8.Clear; Series9.Clear; BarSeries11.Clear; BarSeries9.Clear; BarSeries7.Clear; BarSeries8.Clear; DataModule1.Table5.CLOSE; DataModule1.Query1.CLOSE; DataModule1.Query2.CLOSE;
end;
procedure TFormAvtoMain.ComboBox1Click(Sender: TObject); begin
OneAvtoRasxod(ComboBox1.ItemIndex);
end;
procedure TFormAvtoMain.OneAvtoRasxod(Nom:integer); var L:byte;
begin L:=Length(ComboBox1.Items[Nom]);
Label7.Caption:=Copy(ComboBox1.Items[Nom],1,L-11); Label8.Caption:=Copy(ComboBox1.Items[Nom],L-11+2,10); DataModule1.Table5.First;
while DataModule1.Table5.Eof=False do begin
If (DataModule1.Table5.FieldByName('Дата').AsString=Label8.Caption) and (DataModule1.Table5.FieldByName('Госномер
автомобиля').AsString=Label7.Caption) then begin
Label14.Caption:=DataModule1.Table5.FieldByName('Расход горючегофакт').AsString;
Label15.Caption:=DataModule1.Table5.FieldByName('Расход горючего - норма').AsString;
Label16.Caption:=DataModule1.Table5.FieldByName('Перевезено всего, Т').AsString;
Label17.Caption:=DataModule1.Table5.FieldByName('Пробег общий авто').AsString;
Label18.Caption:=DataModule1.Table5.FieldByName('Пробег с грузом авто').AsString;
end;
237
Продолжение прил. 1
DataModule1.Table5.Next;
end;
with DataModule1.Query1 do begin
If Active then Close; SQL.Clear;
{Params[0].AsDateTime:=DateTimePicker1.Date;
Params[1].AsDateTime:=DateTimePicker2.Date;} SQL.Add('Select * from PUTLIST where (PUTLIST."Госномер
автомобиля"="'+Label7.Caption+'") and (PUTLIST."Дата" between "'+DateToStr(DateTimePicker1.Date)+'" and"'+ Date-
ToStr(DateTimePicker2.Date)+'")');
Prepare;
Open;
end;
DBChart1.Title.Text[1]:=Label7.Caption; With Series3 do
begin Clear;
ParentChart:=DBChart1;
DataSource:=DataModule1.Query1; XLabelsSource:='Дата'; XValues.ValueSource:= 'Дата';
YValues.ValueSource:= 'Расход горючего -норма'; CheckDatasource;
end;
With Series2 do begin
Clear;
ParentChart:=DBChart1;
DataSource:=DataModule1.Query1; XLabelsSource:='Дата'; XValues.ValueSource:= 'Дата';
YValues.ValueSource:= 'Расход горючего-факт'; CheckDatasource;
end;
DBChart7.Title.Text[1]:=Label7.Caption; With BarSeries11 do
begin Clear;
238
Продолжение прил. 1
ParentChart:=DBChart7;
DataSource:=DataModule1.Query1; XLabelsSource:='Дата'; XValues.ValueSource:= 'Дата'; YValues.ValueSource:= 'Перевезено всего, Т'; CheckDatasource;
end;
DBChart6.Title.Text[1]:=Label7.Caption; With BarSeries9 do
begin Clear;
ParentChart:=DBChart6;
DataSource:=DataModule1.Query1; XLabelsSource:='Дата'; XValues.ValueSource:= 'Дата'; YValues.ValueSource:= 'Пробег общий авто'; CheckDatasource;
end;
DBChart5.Title.Text[1]:=Label7.Caption; With BarSeries7 do
begin Clear;
ParentChart:=DBChart5;
DataSource:=DataModule1.Query1; XLabelsSource:='Дата'; XValues.ValueSource:= 'Дата'; YValues.ValueSource:= 'LitrT_KMQ1'; CheckDatasource;
end;
With BarSeries8 do begin
Clear;
ParentChart:=DBChart5;
DataSource:=DataModule1.Query1; XLabelsSource:='Дата'; XValues.ValueSource:= 'Дата'; YValues.ValueSource:= 'LitrT_KM_NormaQ1'; CheckDatasource;
end;
end;
239
Продолжение прил. 1
procedure TFormAvtoMain.FormCreate(Sender: TObject); begin
Period:=7;
DateTimePicker2.Date:=Date{DateToStr(Date)}; DateTimePicker1.Date:=Date-Period{DateToStr(Date)}; end;
procedure TFormAvtoMain.Create_Alias(MyAlias:string); var
AParams: TStringList; Dir: string;
begin
Dir := ExtractFilePath(ParamStr(0)) + MyAlias; //Путь к базе. AParams := TStringList.Create;
if not Session.IsAlias(MyAlias) then //Проверка существования псевдонима dbBaza
begin
Session.AddStandardAlias(MyAlias, Dir, 'PARADOX'); Session.SaveConfigFile;
end else try begin
AParams.Clear; AParams.Add('PATH=' + Dir);
Session.ModifyAlias(MyAlias, AParams); Session.SaveConfigFile;
end; finally
AParams.Free;
end;
end;
end.
unit AvtoModul; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables;
type
TDataModule1 = class(TDataModule)
240