Курсовые работы / ПРИС КП_4
.pdfend;
constructor TformLPGPriceDetail.Create(AOwner: TComponent;aDS:TADODataSet;aMode:Integer); begin
inherited Create(AOwner); aAutoModelID:=0; aLPGdeviceID:=0;
If aDS<>nil Then begin aAutoModelID:=aDS.FieldByName('dic_auto_model_id').AsInteger; aLPGdeviceID:=aDS.FieldByName('dic_LPG_device_id').AsInteger; aID:=aDS.FieldByName('LPG_device_price_id').AsInteger; Label3.Caption:=aDS.FieldByName('manufaktured_name').AsString+':
'+aDS.FieldByName('dic_auto_model.model_name').AsString; Label3.Font.Color:=clGreen; Label4.Caption:=aDS.FieldByName('manufakture_name').AsString+':
'+aDS.FieldByName('dic_LPG_device.model_name').AsString; Label4.Font.Color:=clGreen; MaskEdit1.Text:=aDS.FieldByName('engine_volume').AsString; MaskEdit2.Text:=aDS.FieldByName('tank_volume').AsString; MaskEdit3.Text:=aDS.FieldByName('price').AsString; aSum:=aDS.FieldByName('price').AsCurrency;
end;
btn2.Visible:=aMode<>0; If aMode<>0 Then begin
Label3.OnClick:=Label3Click;
Label4.OnClick:=Label4Click;
end;
Mode:=aMode;
end;
procedure TformLPGPriceDetail.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If ModalResult=mrOk Then begin
If (aAutoModelID=0) Or (aLPGdeviceID=0) Then begin
MessageDlg('Укажите модель автомобиля или модель ГБО!',mtError,[mbOk],0);
Action:=caNone; end Else try
StrToInt(MaskEdit1.Text);
StrToInt(MaskEdit2.Text);
StrToCurr(MaskEdit3.Text); If Mode=1 Then begin //new
With DM.QW Do Begin SQL.Clear; SQL.Add('insert into
LPG_device_price(LPG_device_id,auto_model_id,engine_volume,tank_volume) values ('+
':lid,:aid,:ev,:tv);'); Parameters.ParamByName('lid').Value:=aLPGdeviceID; Parameters.ParamByName('aid').Value:=aAutoModelID; Parameters.ParamByName('ev').Value:=MaskEdit1.Text; Parameters.ParamByName('tv').Value:=MaskEdit2.Text; ExecSQL;
SQL.Clear;
SQL.Add('select @@IDENTITY as [Identity];'); Open; aID:=FieldByName('Identity').AsInteger; Close;
92
SQL.Clear;
SQL.Add('insert into LPG_device_price_history(id_link,date_from,price) values (:id,:df,:pr);');
Parameters.ParamByName('id').Value:=aID; Parameters.ParamByName('df').Value:=DateToStr(Date); Parameters.ParamByName('pr').Value:=MaskEdit3.Text; ExecSQL;
End;
end Else begin //update
If DM.TWStart('LPG_device_price',aID) Then begin With DM.QW Do Begin
SQL.Clear;
SQL.Add('update LPG_device_price set LPG_device_id=:did, auto_model_id=:mid,engine_volume=:ev,tank_volume=:tv where id=:id;');
Parameters.ParamByName('did').Value:=aLPGdeviceID;
Parameters.ParamByName('mid').Value:=aAutoModelID;
Parameters.ParamByName('ev').Value:=MaskEdit1.Text;
Parameters.ParamByName('tv').Value:=MaskEdit2.Text;
Parameters.ParamByName('mid').Value:=aAutoModelID; Parameters.ParamByName('id').Value:=aID;
ExecSQL;
End;
If StrToCurr(MaskEdit3.Text)<>aSum Then With DM.QW Do Begin
SQL.Clear;
SQL.Add('update LPG_device_price_history set date_to=:dt where date_to is null and id_link=:id;');
Parameters.ParamByName('dt').Value:=DateToStr(Date-1); Parameters.ParamByName('id').Value:=aID;
ExecSQL;
SQL.Clear;
SQL.Add('insert into LPG_device_price_history(id_link,date_from,price) values (:id,:df,:pr);');
Parameters.ParamByName('id').Value:=aID; Parameters.ParamByName('df').Value:=DateToStr(Date); Parameters.ParamByName('pr').Value:=MaskEdit3.Text; ExecSQL;
end; DM.TWStop('LPG_device_price',aID);
end Else Action:=caNone; end;
except
MessageDlg('Ошибка в данных!',mtError,[mbOk],0); Action:=caNone;
end;
end;
end;
procedure TformLPGPriceDetail.Label3Click(Sender: TObject); var
F:TformAutomobileSelect; begin
F:=TformAutomobileSelect.Create(Self);
F.ShowModal;
If F.ModalResult=mrOk then begin Label3.Caption:=F.aValue; Label3.Font.Color:=clGreen; aAutoModelID:=F.aID;
end;
93
F.Free;
end;
procedure TformLPGPriceDetail.Label4Click(Sender: TObject); var
F: TformLPGDeviceSelect; begin
F:=TformLPGDeviceSelect.Create(Self);
F.ShowModal;
If F.ModalResult=mrOk then begin Label4.Caption:=F.aValue; Label4.Font.Color:=clGreen; aLPGdeviceID:=F.aID;
end;
F.Free;
end;
end.
Листинг В.12 – модуль «Стоимость ТО ГБО»
unit UnitformLPGTOPrice;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, ExtCtrls, Grids, DBGrids;
type
TformLPGTOPrice = class(TForm) GroupBox1: TGroupBox;
G: TDBGrid; Panel1: TPanel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton;
dbModel: TADODataSet; dsModel: TDataSource;
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject);
private
{Private declarations } public
{Public declarations }
end;
implementation
Uses UnitformLPGTOPriceDetail,UnitDM;
{$R *.dfm}
procedure TformLPGTOPrice.Button2Click(Sender: TObject); var
94
formLPGTOPriceDetail: TformLPGTOPriceDetail; begin
formLPGTOPriceDetail:=TformLPGTOPriceDetail.Create(Self,dbModel,2);
formLPGTOPriceDetail.ShowModal;
formLPGTOPriceDetail.Free;
dbModel.Close;
dbModel.Open;
end;
procedure TformLPGTOPrice.Button3Click(Sender: TObject); var
formLPGTOPriceDetail: TformLPGTOPriceDetail; begin
formLPGTOPriceDetail:=TformLPGTOPriceDetail.Create(Self,dbModel,0);
formLPGTOPriceDetail.ShowModal;
formLPGTOPriceDetail.Free;
end;
procedure TformLPGTOPrice.Button4Click(Sender: TObject); var
formLPGTOPriceDetail: TformLPGTOPriceDetail; begin
formLPGTOPriceDetail:=TformLPGTOPriceDetail.Create(Self,nil,1);
formLPGTOPriceDetail.ShowModal;
formLPGTOPriceDetail.Free;
dbModel.Close;
dbModel.Open;
end;
procedure TformLPGTOPrice.FormClose(Sender: TObject; var Action: TCloseAction);
begin dbModel.Active:=False; Action:=caFree;
end;
procedure TformLPGTOPrice.FormCreate(Sender: TObject); begin
G.OnTitleClick:=DM.onSort;
dbModel.Active:=True;
end;
end.
Листинг В.13 – модуль «Подробно стоимость ТО ГБО»
unit UnitformLPGTOPriceDetail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask,ADODB;
type
TformLPGTOPriceDetail = class(TForm) Label1: TLabel;
Label2: TLabel;
95
Label3: TLabel;
Label4: TLabel;
Label7: TLabel;
Label11: TLabel; MaskEdit3: TMaskEdit; btn1: TButton;
btn2: TButton; Button1: TButton;
procedure Label3Click(Sender: TObject); procedure Label4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btn1Click(Sender: TObject);
private aLPGdeviceID:Integer; aAutoModelID:Integer; aID:Integer; Mode:Integer; aSum:Currency;
public
constructor Create(AOwner: TComponent;aDS:TADODataSet;aMode:Integer); end;
implementation Uses
UnitDM,UnitformPriceHistory,UnitformAutomobileSelect,unitformLPGDeviceSelect
;
{$R *.dfm}
procedure TformLPGTOPriceDetail.btn1Click(Sender: TObject); var
formPriceHistory: TformPriceHistory; begin
formPriceHistory:=TformPriceHistory.Create(Self,aID,'LPG_device_TO_price_his tory');
formPriceHistory.ShowModal;
end;
constructor TformLPGTOPriceDetail.Create(AOwner: TComponent;aDS:TADODataSet;aMode:Integer); begin
inherited Create(AOwner); aAutoModelID:=0; aLPGdeviceID:=0;
If aDS<>nil Then begin aAutoModelID:=aDS.FieldByName('dic_auto_model_id').AsInteger; aLPGdeviceID:=aDS.FieldByName('dic_LPG_device_id').AsInteger; aID:=aDS.FieldByName('LPG_device_price_id').AsInteger; Label3.Caption:=aDS.FieldByName('manufaktured_name').AsString+':
'+aDS.FieldByName('dic_auto_model.model_name').AsString; Label3.Font.Color:=clGreen; Label4.Caption:=aDS.FieldByName('manufakture_name').AsString+':
'+aDS.FieldByName('dic_LPG_device.model_name').AsString; Label4.Font.Color:=clGreen; MaskEdit3.Text:=aDS.FieldByName('price').AsString; aSum:=aDS.FieldByName('price').AsCurrency;
end;
btn2.Visible:=aMode<>0; If aMode<>0 Then begin
Label3.OnClick:=Label3Click;
96
Label4.OnClick:=Label4Click;
end;
Mode:=aMode;
end;
procedure TformLPGTOPriceDetail.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If ModalResult=mrOk Then begin
If (aAutoModelID=0) Or (aLPGdeviceID=0) Then begin
MessageDlg('Укажите модель автомобиля или модель ГБО!',mtError,[mbOk],0);
Action:=caNone; end Else try
StrToCurr(MaskEdit3.Text); If Mode=1 Then begin //new
With DM.QW Do Begin SQL.Clear;
SQL.Add('insert into LPG_device_TO_price(LPG_device_id,auto_model_id) values (:lid,:aid);');
Parameters.ParamByName('lid').Value:=aLPGdeviceID;
Parameters.ParamByName('aid').Value:=aAutoModelID; ExecSQL;
SQL.Clear;
SQL.Add('select @@IDENTITY as [Identity];'); Open; aID:=FieldByName('Identity').AsInteger; Close;
SQL.Clear; SQL.Add('insert into
LPG_device_TO_price_history(id_link,date_from,price) values (:id,:df,:pr);');
Parameters.ParamByName('id').Value:=aID; Parameters.ParamByName('df').Value:=DateToStr(Date); Parameters.ParamByName('pr').Value:=MaskEdit3.Text; ExecSQL;
End;
end Else begin
If DM.TWStart('LPG_device_TO_price',aID) Then Begin With DM.QW Do Begin
SQL.Clear;
SQL.Add('update LPG_device_TO_price set LPG_device_id=:did, auto_model_id=:mid where id=:id;');
Parameters.ParamByName('did').Value:=aLPGdeviceID;
Parameters.ParamByName('mid').Value:=aAutoModelID;
Parameters.ParamByName('mid').Value:=aAutoModelID; Parameters.ParamByName('id').Value:=aID;
ExecSQL;
End;
If StrToCurr(MaskEdit3.Text)<>aSum Then With DM.QW Do Begin
SQL.Clear;
SQL.Add('update LPG_device_TO_price_history set date_to=:dt where date_to is null and id_link=:id;');
Parameters.ParamByName('dt').Value:=DateToStr(Date-1); Parameters.ParamByName('id').Value:=aID;
ExecSQL;
SQL.Clear;
97
SQL.Add('insert into LPG_device_TO_price_history(id_link,date_from,price) values (:id,:df,:pr);');
Parameters.ParamByName('id').Value:=aID; Parameters.ParamByName('df').Value:=DateToStr(Date); Parameters.ParamByName('pr').Value:=MaskEdit3.Text; ExecSQL;
end; DM.TWStop('LPG_device_TO_price',aID);
End Else Action:=caNone; end;
except
MessageDlg('Ошибка в данных!',mtError,[mbOk],0); Action:=caNone;
end;
end;
end;
procedure TformLPGTOPriceDetail.Label3Click(Sender: TObject); var
F:TformAutomobileSelect; begin
F:=TformAutomobileSelect.Create(Self);
F.ShowModal;
If F.ModalResult=mrOk then begin Label3.Caption:=F.aValue; Label3.Font.Color:=clGreen; aAutoModelID:=F.aID;
end;
F.Free;
end;
procedure TformLPGTOPriceDetail.Label4Click(Sender: TObject); var
F: TformLPGDeviceSelect; begin
F:=TformLPGDeviceSelect.Create(Self);
F.ShowModal;
If F.ModalResult=mrOk then begin Label4.Caption:=F.aValue; Label4.Font.Color:=clGreen; aLPGdeviceID:=F.aID;
end;
F.Free;
end;
end.
Листинг В.14 – модуль «История цены»
unit UnitformPriceHistory;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids,UnitDM, DB, ADODB;
98
type
TformPriceHistory = class(TForm) G: TDBGrid;
Button1: TButton; dbModel: TADODataSet; dsModel: TDataSource;
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject);
private public
constructor Create(AOwner: TComponent;aIdLink:Integer;aTable:String); end;
implementation {$R *.dfm}
constructor TformPriceHistory.Create(AOwner: TComponent;aIdLink:Integer;aTable:String); begin
inherited Create(AOwner);
// dbModel.CommandText:='SELECT * FROM LPG_device_price_history where id_link=:id order by date_from';
dbModel.CommandText:='SELECT * FROM '+aTable+' where id_link=:id order by date_from';
dbModel.Parameters.ParamByName('id').Value:=aIdLink; G.OnTitleClick:=DM.onSort;
dbModel.Open;
end;
procedure TformPriceHistory.FormClose(Sender: TObject; var Action: TCloseAction);
begin dbModel.Close; Action:=caFree;
end;
procedure TformPriceHistory.FormCreate(Sender: TObject); begin
G.OnTitleClick:=DM.onSort;
end;
end.
Листинг В.15 – модуль «Выбор роли»
unit UnitformRoleSelect;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids;
type
TformRoleSelect = class(TForm) DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton; private
99
{ Private declarations } public
constructor Create(Sender: TComponent;aUser_ID:String); end;
implementation Uses UnitDM;
{$R *.dfm}
constructor TformRoleSelect.Create(Sender: TComponent;aUser_ID:String); procedure AddColumn(ColName,ColField:string);
begin DBGrid1.Columns.Add;
DBGrid1.Columns.Items[DBGrid1.Columns.Count-1].Title.Caption:=ColName; DBGrid1.Columns.Items[DBGrid1.Columns.Count-1].FieldName:=ColField;
End; begin
inherited Create(Sender); With DM.QW Do Begin
SQL.Clear;
SQL.Add('SELECT * FROM v_role_select where user_id='+''''+aUser_ID+''''+';');
Open;
End; AddColumn('Роль','role_info');
end;
end.
Листинг В.16 – модуль «Авторизация»
unit UnitIdent;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls,UnitDM;
type
TformIdent = class(TForm) DBLookupComboBox1: TDBLookupComboBox; Label1: TLabel;
Label2: TLabel;
Edit1: TEdit; Button1: TButton; Button2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction); private
{Private declarations } public
{Public declarations }
end;
implementation {$R *.dfm}
procedure TformIdent.FormClose(Sender: TObject; var Action: TCloseAction);
100
begin
If (Edit1.Text='') and (ModalResult=mrOk) Then begin MessageDlg('Укажите пароль!',mtError,[mbOk],0); Action:=caNone;
end;
end;
end.
Листинг В.17 – модуль «Основная форма»
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls,IniFiles;
type
TformMain = class(TForm) MainMenu1: TMainMenu; FileN: TMenuItem; Dics: TMenuItem; Reports: TMenuItem; Servis: TMenuItem; RelayN: TMenuItem; QuitN: TMenuItem; SmenaParN: TMenuItem; DBCopy: TMenuItem;
OpenDialog1: TOpenDialog; N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem; service: TMenuItem; SD: TSaveDialog;
procedure RelayNClick(Sender: TObject); procedure SmenaParNClick(Sender: TObject); procedure ReportsClick(Sender: TObject); procedure N5Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure serviceClick(Sender: TObject); procedure DBCopyClick(Sender: TObject);
private UserID:string; UserRole:string; UserPassword:string; DBPath:string;
public
{ Public declarations } end;
var
101