Скачиваний:
11
Добавлен:
17.06.2023
Размер:
3.25 Mб
Скачать

end;

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

Соседние файлы в папке Курсовые работы