Диплом: Автоматизация процесса приема техники на ремонтные работы в ООО "МБ ЗАПАД"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
122
function
TAnalysisSaver.GetQuery (SQL : String) :
TADOQuery;
begin
//
Result :=
TADOQuery.Create(nil);
try
Result.Connection :=
FConnection;
Result.SQL.Text := SQL;
Result.Open;
except
//
on E : Exception do
begin
//
Result.Free;
raise
Exception.Create(E.Message);
end;
end;
end;
constructor
TAnalysisSaver.Create (Connection :
TADOConnection);
begin
//
FConnection := Connection;
FAnalysis :=
TADOTable.Create (nil);
FAnalysis.Connection :=
FConnection;
FAnalysis.TableName :=
'Анализ';
FAnalysisDish :=
TADOTable.Create (nil);
FAnalysisDish.Connection :=
FConnection;
FAnalysisDish.TableName :=
'Анализ_Блюда';
FAnalysisProduct :=
TADOTable.Create (nil);
FAnalysisProduct.Connection
:= FConnection;
FAnalysisProduct.TableName
:= 'Анализ_Продукты';
end;
procedure
TAnalysisSaver.ActiveTables (Value :
Boolean);
begin
//
FAnalysis.Active := Value;
FAnalysisDish.Active :=
Value;
FAnalysisProduct.Active :=
Value;
end;
destructor
TAnalysisSaver.Destroy;
begin
//
end;
procedure
TAnalysisSaver.AddDishProducts (Date :
TDate; DishID : Integer ; Count : Integer);
var
//
Q : TADOQuery;
I : Integer;
VA : array of Variant;
begin
//
try
Q := GetQuery('SELECT *
FROM Состав_блюда WHERE Код_Блюдо
= ' + IntToStr (DishID) + ';');
for I := 1 to Q.RecordCount
do
begin
//
Q.RecNo := I;
SetLength(VA, 3);
VA[0] := Date;
VA[1] :=
Q.FieldByName('Код_Продукт').AsInteger;
VA[2] :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.Filter :=
'Дата = ' + #39 + DateToStr(Date) + #39 + '
and Код_Продукт = ' + IntToStr
(Q.FieldByName('Код_Продукт').AsInteger)
+ ' and Код_Единица = ' + IntToStr
(Q.FieldByName('Код_Единица').AsInteger);
FAnalysisProduct.Filtered
:= True;
if
FAnalysisProduct.RecordCount = 0 then
begin
FAnalysisProduct.Insert;
FAnalysisProduct.FieldByName
('Дата').AsDateTime := Date;
FAnalysisProduct.FieldByName
('Код_Продукт').Value :=
Q.FieldByName('Код_Продукт').AsInteger;
FAnalysisProduct.FieldByName
('Код_Единица').Value :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.FieldByName
('Количество').Value :=
Q.FieldByName('Количество').AsFloat*(Cou
nt + 0.0);
FAnalysisProduct.Post;
end
else
begin
//
FAnalysisProduct.Edit;
FAnalysisProduct.FieldByName
('Количество').AsFloat :=
FAnalysisProduct.FieldByName
('Количество').AsFloat +
Q.FieldByName('Количество').AsFloat*Coun
t;
FAnalysisProduct.Post;
end;
end;
finally
//
FAnalysisProduct.Filtered :=
false;
if (Q <> nil) then Q.Free;
SetLength(VA, 0);
end;
end;
procedure TAnalysisSaver.Clear;
var
//
J : Integer;
begin
//
for J := FAnalysis.RecordCount
downto 1 do
begin
//
FAnalysis.RecNo := J;
FAnalysis.Delete;
end;
end;
procedure
TAnalysisSaver.CreateAnalysis (FirstDate :
TDateTime; DaysCount : Integer);
123
var
//
I : Integer;
begin
//
try
FAnalysis.Open;
Clear;
for I := 0 to DaysCount - 1
do
begin
FAnalysis.Insert;
FAnalysis.FieldByName
('Дата').Value := Int(FirstDate) + I;
FAnalysis.Post;
end;
finally
ActiveTables(false);
end;
end;
procedure TAnalysisSaver.Save
(Date : TDate; DishID : Integer; Count :
Integer);
begin
//
try
ActiveTables(true);
FAnalysisDish.Insert;
FAnalysisDish.FieldByName
('Дата').AsDateTime := Date;
FAnalysisDish.FieldByName
('Код_Блюдо').AsInteger := DishID;
FAnalysisDish.FieldByName
('Количество').AsInteger := Count;
FAnalysisDish.Post;
AddDishProducts (Date,
DishID, Count);
finally
//
ActiveTables(false);
end;
end;
end.
unit uConnectionInfo;
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************** Режим
сервера ****************************
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
{
Модуль содержит класс,
который описывает установленное
соединение;
}
interface
uses Classes, SysUtils,
Datasnap.DSTCPServerTransport;
type
// Класс для хранения
информации о подключенных
пользователях;
TConnectionInfo = class
//
private
// Уникальный ключ;
FKey : Integer;
// Дата и время создания;
FDateTime : TDateTime;
// IP адрес;
FIP : String;
// Канал;
FChannel :
TDSTCPChannel;
// Код пользователя;
FUserKey : Integer;
//
FUserTypeKey : Integer;
public
// Конструктор класса;
constructor Create (Key :
Integer);
// Деструктор класса;
destructor Destroy; overload;
property Key : Integer read
FKey;
property DateTime :
TDateTime read FDateTime;
property IP : String read FIP
write FIP;
property Channel :
TDSTCPChannel read FChannel write
FChannel;
property UserKey : Integer
read FUserKey write FUserKey;
property UserTypeKey :
Integer read FUserTypeKey write
FUserTypeKey;
end;
implementation
constructor
TConnectionInfo.Create (Key : Integer);
begin
//
inherited Create;
FKey := Key;
FDateTime := Now;
FUserKey := 0;
end;
destructor
TConnectionInfo.Destroy;
begin
//
inherited Destroy;
end;
end.
unit uAnalysisSaver;
interface
uses Classes, DB, ADODB,
SysUtils, Dialogs;
124
type
TAnalysisSaver = class
//
private
FConnection :
TADOConnection;
FAnalysis : TADOTable;
FAnalysisDish :
TADOTable;
FAnalysisProduct :
TADOTable;
function GetQuery (SQL :
String) : TADOQuery;
procedure AddDishProducts
(Date : TDate; DishID : Integer ; Count :
Integer);
procedure Clear;
procedure ActiveTables
(Value : Boolean);
public
constructor Create
(Connection : TADOConnection);
destructor Destroy;
procedure CreateAnalysis
(FirstDate : TDateTime; DaysCount : Integer);
procedure Save (Date :
TDate; DishID : Integer ; Count : Integer);
end;
implementation
function
TAnalysisSaver.GetQuery (SQL : String) :
TADOQuery;
begin
//
Result :=
TADOQuery.Create(nil);
try
Result.Connection :=
FConnection;
Result.SQL.Text := SQL;
Result.Open;
except
//
on E : Exception do
begin
//
Result.Free;
raise
Exception.Create(E.Message);
end;
end;
end;
constructor
TAnalysisSaver.Create (Connection :
TADOConnection);
begin
//
FConnection := Connection;
FAnalysis :=
TADOTable.Create (nil);
FAnalysis.Connection :=
FConnection;
FAnalysis.TableName :=
'Анализ';
FAnalysisDish :=
TADOTable.Create (nil);
FAnalysisDish.Connection :=
FConnection;
FAnalysisDish.TableName :=
'Анализ_Блюда';
FAnalysisProduct :=
TADOTable.Create (nil);
FAnalysisProduct.Connection
:= FConnection;
FAnalysisProduct.TableName
:= 'Анализ_Продукты';
end;
procedure
TAnalysisSaver.ActiveTables (Value :
Boolean);
begin
//
FAnalysis.Active := Value;
FAnalysisDish.Active :=
Value;
FAnalysisProduct.Active :=
Value;
end;
destructor
TAnalysisSaver.Destroy;
begin
//
end;
procedure
TAnalysisSaver.AddDishProducts (Date :
TDate; DishID : Integer ; Count : Integer);
var
//
Q : TADOQuery;
I : Integer;
VA : array of Variant;
begin
//
try
Q := GetQuery('SELECT *
FROM Состав_блюда WHERE Код_Блюдо
= ' + IntToStr (DishID) + ';');
for I := 1 to Q.RecordCount
do
begin
//
Q.RecNo := I;
SetLength(VA, 3);
VA[0] := Date;
VA[1] :=
Q.FieldByName('Код_Продукт').AsInteger;
VA[2] :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.Filter :=
'Дата = ' + #39 + DateToStr(Date) + #39 + '
and Код_Продукт = ' + IntToStr
(Q.FieldByName('Код_Продукт').AsInteger)
+ ' and Код_Единица = ' + IntToStr
(Q.FieldByName('Код_Единица').AsInteger);
FAnalysisProduct.Filtered
:= True;
if
FAnalysisProduct.RecordCount = 0 then
begin
FAnalysisProduct.Insert;
FAnalysisProduct.FieldByName
('Дата').AsDateTime := Date;
FAnalysisProduct.FieldByName
('Код_Продукт').Value :=
Q.FieldByName('Код_Продукт').AsInteger;
FAnalysisProduct.FieldByName
('Код_Единица').Value :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.FieldByName
('Количество').Value :=
Q.FieldByName('Количество').AsFloat*(Cou
nt + 0.0);
FAnalysisProduct.Post;
end
else
begin
//
FAnalysisProduct.Edit;
FAnalysisProduct.FieldByName
('Количество').AsFloat :=
FAnalysisProduct.FieldByName
125
('Количество').AsFloat +
Q.FieldByName('Количество').AsFloat*Coun
t;
FAnalysisProduct.Post;
end;
end;
finally
//
FAnalysisProduct.Filtered :=
false;
if (Q <> nil) then Q.Free;
SetLength(VA, 0);
end;
end;
procedure TAnalysisSaver.Clear;
var
//
J : Integer;
begin
//
for J := FAnalysis.RecordCount
downto 1 do
begin
//
FAnalysis.RecNo := J;
FAnalysis.Delete;
end;
end;
procedure
TAnalysisSaver.CreateAnalysis (FirstDate :
TDateTime; DaysCount : Integer);
var
//
I : Integer;
begin
//
try
FAnalysis.Open;
Clear;
for I := 0 to DaysCount - 1
do
begin
FAnalysis.Insert;
FAnalysis.FieldByName
('Дата').Value := Int(FirstDate) + I;
FAnalysis.Post;
end;
finally
ActiveTables(false);
end;
end;
procedure TAnalysisSaver.Save
(Date : TDate; DishID : Integer; Count :
Integer);
begin
//
try
ActiveTables(true);
FAnalysisDish.Insert;
FAnalysisDish.FieldByName
('Дата').AsDateTime := Date;
FAnalysisDish.FieldByName
('Код_Блюдо').AsInteger := DishID;
FAnalysisDish.FieldByName
('Количество').AsInteger := Count;
FAnalysisDish.Post;
AddDishProducts (Date,
DishID, Count);
finally
//
ActiveTables(false);
end;
end;
end.
unit uConnectionInfo;
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************** Режим
сервера ****************************
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
{
Модуль содержит класс,
который описывает установленное
соединение;
}
interface
uses Classes, SysUtils,
Datasnap.DSTCPServerTransport;
type
// Класс для хранения
информации о подключенных
пользователях;
TConnectionInfo = class
//
private
// Уникальный ключ;
FKey : Integer;
// Дата и время создания;
FDateTime : TDateTime;
// IP адрес;
FIP : String;
// Канал;
FChannel :
TDSTCPChannel;
// Код пользователя;
FUserKey : Integer;
//
FUserTypeKey : Integer;
public
// Конструктор класса;
constructor Create (Key :
Integer);
// Деструктор класса;
destructor Destroy; overload;
property Key : Integer read
FKey;
property DateTime :
TDateTime read FDateTime;
property IP : String read FIP
write FIP;
property Channel :
TDSTCPChannel read FChannel write
FChannel;
126
property UserKey : Integer
read FUserKey write FUserKey;
property UserTypeKey :
Integer read FUserTypeKey write
FUserTypeKey;
end;
implementation
constructor
TConnectionInfo.Create (Key : Integer);
begin
//
inherited Create;
FKey := Key;
FDateTime := Now;
FUserKey := 0;
end;
destructor
TConnectionInfo.Destroy;
begin
//
inherited Destroy;
end;
end.
unit uAnalysisSaver;
interface
uses Classes, DB, ADODB,
SysUtils, Dialogs;
type
TAnalysisSaver = class
//
private
FConnection :
TADOConnection;
FAnalysis : TADOTable;
FAnalysisDish :
TADOTable;
FAnalysisProduct :
TADOTable;
function GetQuery (SQL :
String) : TADOQuery;
procedure AddDishProducts
(Date : TDate; DishID : Integer ; Count :
Integer);
procedure Clear;
procedure ActiveTables
(Value : Boolean);
public
constructor Create
(Connection : TADOConnection);
destructor Destroy;
procedure CreateAnalysis
(FirstDate : TDateTime; DaysCount : Integer);
procedure Save (Date :
TDate; DishID : Integer ; Count : Integer);
end;
implementation
function
TAnalysisSaver.GetQuery (SQL : String) :
TADOQuery;
begin
//
Result :=
TADOQuery.Create(nil);
try
Result.Connection :=
FConnection;
Result.SQL.Text := SQL;
Result.Open;
except
//
on E : Exception do
begin
//
Result.Free;
raise
Exception.Create(E.Message);
end;
end;
end;
constructor
TAnalysisSaver.Create (Connection :
TADOConnection);
begin
//
FConnection := Connection;
FAnalysis :=
TADOTable.Create (nil);
FAnalysis.Connection :=
FConnection;
FAnalysis.TableName :=
'Анализ';
FAnalysisDish :=
TADOTable.Create (nil);
FAnalysisDish.Connection :=
FConnection;
FAnalysisDish.TableName :=
'Анализ_Блюда';
FAnalysisProduct :=
TADOTable.Create (nil);
FAnalysisProduct.Connection
:= FConnection;
FAnalysisProduct.TableName
:= 'Анализ_Продукты';
end;
procedure
TAnalysisSaver.ActiveTables (Value :
Boolean);
begin
//
FAnalysis.Active := Value;
FAnalysisDish.Active :=
Value;
FAnalysisProduct.Active :=
Value;
end;
destructor
TAnalysisSaver.Destroy;
begin
//
end;
procedure
TAnalysisSaver.AddDishProducts (Date :
TDate; DishID : Integer ; Count : Integer);
var
//
Q : TADOQuery;
I : Integer;
VA : array of Variant;
begin
//
try
Q := GetQuery('SELECT *
FROM Состав_блюда WHERE Код_Блюдо
= ' + IntToStr (DishID) + ';');
for I := 1 to Q.RecordCount
do
begin
//
Q.RecNo := I;
SetLength(VA, 3);
VA[0] := Date;
VA[1] :=
Q.FieldByName('Код_Продукт').AsInteger;
VA[2] :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.Filter :=
'Дата = ' + #39 + DateToStr(Date) + #39 + '
and Код_Продукт = ' + IntToStr
(Q.FieldByName('Код_Продукт').AsInteger)
127
+ ' and Код_Единица = ' + IntToStr
(Q.FieldByName('Код_Единица').AsInteger);
FAnalysisProduct.Filtered
:= True;
if
FAnalysisProduct.RecordCount = 0 then
begin
FAnalysisProduct.Insert;
FAnalysisProduct.FieldByName
('Дата').AsDateTime := Date;
FAnalysisProduct.FieldByName
('Код_Продукт').Value :=
Q.FieldByName('Код_Продукт').AsInteger;
FAnalysisProduct.FieldByName
('Код_Единица').Value :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.FieldByName
('Количество').Value :=
Q.FieldByName('Количество').AsFloat*(Cou
nt + 0.0);
FAnalysisProduct.Post;
end
else
begin
//
FAnalysisProduct.Edit;
FAnalysisProduct.FieldByName
('Количество').AsFloat :=
FAnalysisProduct.FieldByName
('Количество').AsFloat +
Q.FieldByName('Количество').AsFloat*Coun
t;
FAnalysisProduct.Post;
end;
end;
finally
//
FAnalysisProduct.Filtered :=
false;
if (Q <> nil) then Q.Free;
SetLength(VA, 0);
end;
end;
procedure TAnalysisSaver.Clear;
var
//
J : Integer;
begin
//
for J := FAnalysis.RecordCount
downto 1 do
begin
//
FAnalysis.RecNo := J;
FAnalysis.Delete;
end;
end;
procedure
TAnalysisSaver.CreateAnalysis (FirstDate :
TDateTime; DaysCount : Integer);
var
//
I : Integer;
begin
//
try
FAnalysis.Open;
Clear;
for I := 0 to DaysCount - 1
do
begin
FAnalysis.Insert;
FAnalysis.FieldByName
('Дата').Value := Int(FirstDate) + I;
FAnalysis.Post;
end;
finally
ActiveTables(false);
end;
end;
procedure TAnalysisSaver.Save
(Date : TDate; DishID : Integer; Count :
Integer);
begin
//
try
ActiveTables(true);
FAnalysisDish.Insert;
FAnalysisDish.FieldByName
('Дата').AsDateTime := Date;
FAnalysisDish.FieldByName
('Код_Блюдо').AsInteger := DishID;
FAnalysisDish.FieldByName
('Количество').AsInteger := Count;
FAnalysisDish.Post;
AddDishProducts (Date,
DishID, Count);
finally
//
ActiveTables(false);
end;
end;
end.
unit uConnectionInfo;
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************** Режим
сервера ****************************
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
{
Модуль содержит класс,
который описывает установленное
соединение;
}
interface
uses Classes, SysUtils,
Datasnap.DSTCPServerTransport;
type
128
// Класс для хранения
информации о подключенных
пользователях;
TConnectionInfo = class
//
private
// Уникальный ключ;
FKey : Integer;
// Дата и время создания;
FDateTime : TDateTime;
// IP адрес;
FIP : String;
// Канал;
FChannel :
TDSTCPChannel;
// Код пользователя;
FUserKey : Integer;
//
FUserTypeKey : Integer;
public
// Конструктор класса;
constructor Create (Key :
Integer);
// Деструктор класса;
destructor Destroy; overload;
property Key : Integer read
FKey;
property DateTime :
TDateTime read FDateTime;
property IP : String read FIP
write FIP;
property Channel :
TDSTCPChannel read FChannel write
FChannel;
property UserKey : Integer
read FUserKey write FUserKey;
property UserTypeKey :
Integer read FUserTypeKey write
FUserTypeKey;
end;
implementation
constructor
TConnectionInfo.Create (Key : Integer);
begin
//
inherited Create;
FKey := Key;
FDateTime := Now;
FUserKey := 0;
end;
destructor
TConnectionInfo.Destroy;
begin
//
inherited Destroy;
end;
end.
unit uAnalysisSaver;
interface
uses Classes, DB, ADODB,
SysUtils, Dialogs;
type
TAnalysisSaver = class
//
private
FConnection :
TADOConnection;
FAnalysis : TADOTable;
FAnalysisDish :
TADOTable;
FAnalysisProduct :
TADOTable;
function GetQuery (SQL :
String) : TADOQuery;
procedure AddDishProducts
(Date : TDate; DishID : Integer ; Count :
Integer);
procedure Clear;
procedure ActiveTables
(Value : Boolean);
public
constructor Create
(Connection : TADOConnection);
destructor Destroy;
procedure CreateAnalysis
(FirstDate : TDateTime; DaysCount : Integer);
procedure Save (Date :
TDate; DishID : Integer ; Count : Integer);
end;
implementation
function
TAnalysisSaver.GetQuery (SQL : String) :
TADOQuery;
begin
//
Result :=
TADOQuery.Create(nil);
try
Result.Connection :=
FConnection;
Result.SQL.Text := SQL;
Result.Open;
except
//
on E : Exception do
begin
//
Result.Free;
raise
Exception.Create(E.Message);
end;
end;
end;
constructor
TAnalysisSaver.Create (Connection :
TADOConnection);
begin
//
FConnection := Connection;
FAnalysis :=
TADOTable.Create (nil);
FAnalysis.Connection :=
FConnection;
FAnalysis.TableName :=
'Анализ';
FAnalysisDish :=
TADOTable.Create (nil);
FAnalysisDish.Connection :=
FConnection;
FAnalysisDish.TableName :=
'Анализ_Блюда';
FAnalysisProduct :=
TADOTable.Create (nil);
FAnalysisProduct.Connection
:= FConnection;
FAnalysisProduct.TableName
:= 'Анализ_Продукты';
end;
procedure
TAnalysisSaver.ActiveTables (Value :
Boolean);
begin
//
FAnalysis.Active := Value;
FAnalysisDish.Active :=
Value;
FAnalysisProduct.Active :=
Value;
end;
destructor
TAnalysisSaver.Destroy;
129
begin
//
end;
procedure
TAnalysisSaver.AddDishProducts (Date :
TDate; DishID : Integer ; Count : Integer);
var
//
Q : TADOQuery;
I : Integer;
VA : array of Variant;
begin
//
try
Q := GetQuery('SELECT *
FROM Состав_блюда WHERE Код_Блюдо
= ' + IntToStr (DishID) + ';');
for I := 1 to Q.RecordCount
do
begin
//
Q.RecNo := I;
SetLength(VA, 3);
VA[0] := Date;
VA[1] :=
Q.FieldByName('Код_Продукт').AsInteger;
VA[2] :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.Filter :=
'Дата = ' + #39 + DateToStr(Date) + #39 + '
and Код_Продукт = ' + IntToStr
(Q.FieldByName('Код_Продукт').AsInteger)
+ ' and Код_Единица = ' + IntToStr
(Q.FieldByName('Код_Единица').AsInteger);
FAnalysisProduct.Filtered
:= True;
if
FAnalysisProduct.RecordCount = 0 then
begin
FAnalysisProduct.Insert;
FAnalysisProduct.FieldByName
('Дата').AsDateTime := Date;
FAnalysisProduct.FieldByName
('Код_Продукт').Value :=
Q.FieldByName('Код_Продукт').AsInteger;
FAnalysisProduct.FieldByName
('Код_Единица').Value :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.FieldByName
('Количество').Value :=
Q.FieldByName('Количество').AsFloat*(Cou
nt + 0.0);
FAnalysisProduct.Post;
end
else
begin
//
FAnalysisProduct.Edit;
FAnalysisProduct.FieldByName
('Количество').AsFloat :=
FAnalysisProduct.FieldByName
('Количество').AsFloat +
Q.FieldByName('Количество').AsFloat*Coun
t;
FAnalysisProduct.Post;
end;
end;
finally
//
FAnalysisProduct.Filtered :=
false;
if (Q <> nil) then Q.Free;
SetLength(VA, 0);
end;
end;
procedure TAnalysisSaver.Clear;
var
//
J : Integer;
begin
//
for J := FAnalysis.RecordCount
downto 1 do
begin
//
FAnalysis.RecNo := J;
FAnalysis.Delete;
end;
end;
procedure
TAnalysisSaver.CreateAnalysis (FirstDate :
TDateTime; DaysCount : Integer);
var
//
I : Integer;
begin
//
try
FAnalysis.Open;
Clear;
for I := 0 to DaysCount - 1
do
begin
FAnalysis.Insert;
FAnalysis.FieldByName
('Дата').Value := Int(FirstDate) + I;
FAnalysis.Post;
end;
finally
ActiveTables(false);
end;
end;
procedure TAnalysisSaver.Save
(Date : TDate; DishID : Integer; Count :
Integer);
begin
//
try
ActiveTables(true);
FAnalysisDish.Insert;
FAnalysisDish.FieldByName
('Дата').AsDateTime := Date;
FAnalysisDish.FieldByName
('Код_Блюдо').AsInteger := DishID;
FAnalysisDish.FieldByName
('Количество').AsInteger := Count;
FAnalysisDish.Post;
AddDishProducts (Date,
DishID, Count);
finally
//
ActiveTables(false);
end;
end;
end.
unit uConnectionInfo;
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
130
//
*************************************
*************************************
*
//
*************************** Режим
сервера ****************************
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
//
*************************************
*************************************
*
{
Модуль содержит класс,
который описывает установленное
соединение;
}
interface
uses Classes, SysUtils,
Datasnap.DSTCPServerTransport;
type
// Класс для хранения
информации о подключенных
пользователях;
TConnectionInfo = class
//
private
// Уникальный ключ;
FKey : Integer;
// Дата и время создания;
FDateTime : TDateTime;
// IP адрес;
FIP : String;
// Канал;
FChannel :
TDSTCPChannel;
// Код пользователя;
FUserKey : Integer;
//
FUserTypeKey : Integer;
public
// Конструктор класса;
constructor Create (Key :
Integer);
// Деструктор класса;
destructor Destroy; overload;
property Key : Integer read
FKey;
property DateTime :
TDateTime read FDateTime;
property IP : String read FIP
write FIP;
property Channel :
TDSTCPChannel read FChannel write
FChannel;
property UserKey : Integer
read FUserKey write FUserKey;
property UserTypeKey :
Integer read FUserTypeKey write
FUserTypeKey;
end;
implementation
constructor
TConnectionInfo.Create (Key : Integer);
begin
//
inherited Create;
FKey := Key;
FDateTime := Now;
FUserKey := 0;
end;
destructor
TConnectionInfo.Destroy;
begin
//
inherited Destroy;
end;
end.
unit uAnalysisSaver;
interface
uses Classes, DB, ADODB,
SysUtils, Dialogs;
type
TAnalysisSaver = class
//
private
FConnection :
TADOConnection;
FAnalysis : TADOTable;
FAnalysisDish :
TADOTable;
FAnalysisProduct :
TADOTable;
function GetQuery (SQL :
String) : TADOQuery;
procedure AddDishProducts
(Date : TDate; DishID : Integer ; Count :
Integer);
procedure Clear;
procedure ActiveTables
(Value : Boolean);
public
constructor Create
(Connection : TADOConnection);
destructor Destroy;
procedure CreateAnalysis
(FirstDate : TDateTime; DaysCount : Integer);
procedure Save (Date :
TDate; DishID : Integer ; Count : Integer);
end;
implementation
function
TAnalysisSaver.GetQuery (SQL : String) :
TADOQuery;
begin
//
Result :=
TADOQuery.Create(nil);
try
Result.Connection :=
FConnection;
Result.SQL.Text := SQL;
Result.Open;
except
//
on E : Exception do
begin
//
Result.Free;
raise
Exception.Create(E.Message);
end;
end;
end;
constructor
TAnalysisSaver.Create (Connection :
TADOConnection);
begin
//
FConnection := Connection;
131
FAnalysis :=
TADOTable.Create (nil);
FAnalysis.Connection :=
FConnection;
FAnalysis.TableName :=
'Анализ';
FAnalysisDish :=
TADOTable.Create (nil);
FAnalysisDish.Connection :=
FConnection;
FAnalysisDish.TableName :=
'Анализ_Блюда';
FAnalysisProduct :=
TADOTable.Create (nil);
FAnalysisProduct.Connection
:= FConnection;
FAnalysisProduct.TableName
:= 'Анализ_Продукты';
end;
procedure
TAnalysisSaver.ActiveTables (Value :
Boolean);
begin
//
FAnalysis.Active := Value;
FAnalysisDish.Active :=
Value;
FAnalysisProduct.Active :=
Value;
end;
destructor
TAnalysisSaver.Destroy;
begin
//
end;
procedure
TAnalysisSaver.AddDishProducts (Date :
TDate; DishID : Integer ; Count : Integer);
var
//
Q : TADOQuery;
I : Integer;
VA : array of Variant;
begin
//
try
Q := GetQuery('SELECT *
FROM Состав_блюда WHERE Код_Блюдо
= ' + IntToStr (DishID) + ';');
for I := 1 to Q.RecordCount
do
begin
//
Q.RecNo := I;
SetLength(VA, 3);
VA[0] := Date;
VA[1] :=
Q.FieldByName('Код_Продукт').AsInteger;
VA[2] :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.Filter :=
'Дата = ' + #39 + DateToStr(Date) + #39 + '
and Код_Продукт = ' + IntToStr
(Q.FieldByName('Код_Продукт').AsInteger)
+ ' and Код_Единица = ' + IntToStr
(Q.FieldByName('Код_Единица').AsInteger);
FAnalysisProduct.Filtered
:= True;
if
FAnalysisProduct.RecordCount = 0 then
begin
FAnalysisProduct.Insert;
FAnalysisProduct.FieldByName
('Дата').AsDateTime := Date;
FAnalysisProduct.FieldByName
('Код_Продукт').Value :=
Q.FieldByName('Код_Продукт').AsInteger;
FAnalysisProduct.FieldByName
('Код_Единица').Value :=
Q.FieldByName('Код_Единица').AsInteger;
FAnalysisProduct.FieldByName
('Количество').Value :=
Q.FieldByName('Количество').AsFloat*(Cou
nt + 0.0);
FAnalysisProduct.Post;
end
else
begin
//
FAnalysisProduct.Edit;
FAnalysisProduct.FieldByName
('Количество').AsFloat :=
FAnalysisProduct.FieldByName
('Количество').AsFloat +
Q.FieldByName('Количество').AsFloat*Coun
t;
FAnalysisProduct.Post;
end;
end;
finally
//
FAnalysisProduct.Filtered :=
false;
if (Q <> nil) then Q.Free;
SetLength(VA, 0);
end;
end;
procedure TAnalysisSaver.Clear;
var
//
J : Integer;
begin
//
for J := FAnalysis.RecordCount
downto 1 do
begin
//
FAnalysis.RecNo := J;
FAnalysis.Delete;
end;
end;
procedure
TAnalysisSaver.CreateAnalysis (FirstDate :
TDateTime; DaysCount : Integer);
var
//
I : Integer;
begin
//
try
FAnalysis.Open;
Clear;
for I := 0 to DaysCount - 1
do
begin
FAnalysis.Insert;
FAnalysis.FieldByName
('Дата').Value := Int(FirstDate) + I;
FAnalysis.Post;
end;
finally
ActiveTables(false);
end;
end;
procedure TAnalysisSaver.Save
(Date : TDate; DishID : Integer; Count :
Integer);
begin
//
try
ActiveTables(true);
FAnalysisDish.Insert;

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)