.


:




:

































 

 

 

 


. 02 , .

:


 

. 4

1. .. 5

1.1. .. 6

1.2. . 11

1.3. .. 12

2. . 13

. 14

.. 15

. 16

 

 


 

, . . , , .

, . , , . . .

, , . MySQL .

MySQL , , .

MySQL , .

, , Delphi. , .

 

 


. :

1. TDataSetProvider, TClientDataSet, TDataSource ;

2. TSQLQuery ;

3. TDBGrid ;

4. TDBNavigator ;

5. TMainMenu , .

 


:

1 -

TDBGrid , TDBNavigator , TDBGrid TMainMenu .

, :

2 - "",

 

 

, :

3 - , ""

, , , , .

, . , .

, :

4 - , ""

, .

, :

5 -

, :

6 - , ""

, , , , .

:

7 - / ""

 

, :

8 - , ""

, , , .

养, . , :

9 - , " ..."

, . , , :

procedure TForm1.N9Click(Sender: TObject);

begin

_state:= ST_NONE;

Caption:= '';

try

ClientDataSet1.Close;

q.Close;

q.SQL.Text:=

'select orders.id_orders as " ", dish.title as "", ' +

'orders.cnt as "", menu.price as "", ' +

'(orders.cnt * menu.price) as "" ' +

'from orders ' +

'left join dish on (orders.id_dish = dish.id_dish) ' +

'left join menu on (dish.id_dish = menu.id_dish)' +

'order by orders.id_orders';

q.Open;

q.FieldByName('').AsCurrency;

q.FieldByName('').AsCurrency;

DataSetProvider1.DataSet:= q;

ClientDataSet1.Open;

DBGrid1.Columns[1].Width:= 200;

except on e:Exception do

MessageBox(0, ' ""!', '', MB_OK + MB_ICONWARNING);

end;

DBGrid1.Options:= DBGrid1.Options - [dgEditing];

end;

SQL, , , .

: *


 

, . , , , , .

DBGrid .

, , , DBGrid .

:

- 600 ;

- VGA 800x600;

- 128

- WindowsXP;

- 5 .


 

, :

 

1. Cafe.exe

. .

2. , ,

, .

3.

, .

4. , ,

.

, , .

 

 

, , .

.

, , .

MySQL, Delphi 2010. dbExpress.

 

 

1. .. : . . .: . ., 2003. 447 .

2. . Delphi. . 2010. .: , 2010. 1035 .

3. .. Delphi. : . . .: , 2009. 640 .

4. .. : / .. , .. . : - .., 2003. 719 .

5. .. Delphi 7: . .: , 2008. 736 .

6. .. Delphi . .: -, 2007. 288 .

7. .. Delphi: Delphi. .: , 2008. 804 .

8. .. Delphi. .: -, 2009. 799.

9. .. Delphi/ .. , .. . -, 2004. 320 .

10. .. Windows. - .:- , 1995. 639 .

1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, Menus, ExtCtrls, DBCtrls,

FMTBcd, DBClient, Provider, SqlExpr,

Mbd_MySql, uMenuRec, uOrderRec;

type

TForm1 = class(TForm)

Button1: TButton;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

Panel1: TPanel;

Panel2: TPanel;

dbNav: TDBNavigator;

N8: TMenuItem;

N9: TMenuItem;

qDish: TSQLQuery;

DataSetProvider1: TDataSetProvider;

ClientDataSet1: TClientDataSet;

qMenu: TSQLQuery;

qDishtitle: TStringField;

qDishweight: TFloatField;

qDishcompos: TStringField;

qDishid_dish: TIntegerField;

qMenuprice: TFloatField;

qMenutitle: TStringField;

qMng: TSQLQuery;

qMngid_manager: TIntegerField;

qMngf: TStringField;

qMngi: TStringField;

qMngo: TStringField;

qMngtel: TStringField;

qMenuid_menu: TIntegerField;

qMenuid_dish: TIntegerField;

qOrders: TSQLQuery;

qOrdersid_orders: TIntegerField;

qOrdersid_dish: TIntegerField;

qOrdersid_manager: TIntegerField;

qOrderscnt: TIntegerField;

qOrderscreated_at: TSQLTimeStampField;

qOrderstitle: TStringField;

qOrdersf: TStringField;

q: TSQLQuery;

procedure N2Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure ClientDataSet1AfterPost(DataSet: TDataSet);

procedure dbNavBeforeAction(Sender: TObject; Button: TNavigateBtn);

private

_state: integer;

_db: TMbd_MySql;

Public

end;

const

ST_NONE = 0;

ST_DISH = 1;

ST_MENU = 2;

ST_MNG = 3;

ST_ORDER = 4;

var

Form1: TForm1;

Implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

_state:= ST_NONE;

_db:= TMbd_MySql.Create;

_db.PutDoDirDll:= ExtractFileDir(Application.ExeName);

_db.ConnectionFile:= 'connekt';

end;

procedure TForm1.FormActivate(Sender: TObject);

var

res: Boolean;

begin

res:= false;

//

try

if _db.ConnectDb('045595112_admin', 'admin') then

begin

//SQLQuery1.SQLConnection:= _db.MySqlConnection;

//SQLQuery2.SQLConnection:= _db.MySqlConnection;

//qDish.Open;

//qMenu.Open;

q.SQLConnection:= _db.MySqlConnection;

qDish.SQLConnection:= _db.MySqlConnection;

qMenu.SQLConnection:= _db.MySqlConnection;

qOrders.SQLConnection:= _db.MySqlConnection;

qMng.SQLConnection:= _db.MySqlConnection;

res:= true;

end

else

begin

MessageBox(0, ' .' + #13#10 + ' .',

'', MB_ICONEXCLAMATION + MB_OK);

Application.Terminate;

end;

except on e:Exception do

MessageBox(0, ' .' + #13#10 + ' .',

'', MB_ICONERROR + MB_OK);

end;

if (not res) then

Close;

end;

 

procedure TForm1.N2Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet);

begin

if (ClientDataSet1.Active) then

ClientDataSet1.ApplyUpdates(0);

end;

procedure TForm1.dbNavBeforeAction(Sender: TObject; Button: TNavigateBtn);

var

sql: string;

begin

case _state of

ST_NONE: Abort;

ST_MENU:

begin

if (Button = nbInsert) then

begin

FormMenuRec.showNew(_db);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbEdit) then

begin

with DBGrid1.DataSource.DataSet do

FormMenuRec.showEdit(_db, FieldByName('id_menu').AsInteger,

FieldByName('id_dish').AsInteger, FieldByName('price').AsCurrency);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbDelete) then

begin

with DBGrid1.DataSource.DataSet do

sql:= 'delete from menu where id_menu = ' +

FieldByName('id_menu').AsString;

if (_db.DdlExecute(sql) = 1) then

MessageBox(0, ' .', '', MB_ICONINFORMATION + MB_OK)

else

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

DataSource1.DataSet.Refresh;

Abort;

end;

end;

ST_ORDER:

begin

if (Button = nbInsert) then

begin

FormOrders.showNew(_db);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbEdit) then

begin

with DBGrid1.DataSource.DataSet do

FormOrders.showEdit(_db, FieldByName('id_orders').AsInteger, FieldByName('id_dish').AsInteger,

FieldByName('id_manager').AsInteger, FieldByName('cnt').AsInteger);

DataSource1.DataSet.Refresh;

Abort;

end;

if (Button = nbDelete) then

begin

with DBGrid1.DataSource.DataSet do

sql:= 'delete from orders where id_orders = ' + FieldByName('id_orders').AsString;

if (_db.DdlExecute(sql) = 1) then

MessageBox(0, ' .', '', MB_ICONINFORMATION + MB_OK)

else

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

DataSource1.DataSet.Refresh;

Abort;

end;

end;

end;

end;

{ }

procedure TForm1.N4Click(Sender: TObject);

begin

Caption:= '';

_state:= ST_DISH;

ClientDataSet1.Close;

DataSetProvider1.DataSet:= qDish;

ClientDataSet1.Active:= true;

DBGrid1.Columns[0].Visible:= false;

DBGrid1.Columns[1].Title.Caption:= ' ';

DBGrid1.Columns[1].Width:= 200;

DBGrid1.Columns[2].Title.Caption:= ' ()';

DBGrid1.Columns[2].Width:= 60;

DBGrid1.Columns[3].Title.Caption:= '';

DBGrid1.Columns[3].Width:= 400;

DBGrid1.Options:= DBGrid1.Options + [dgEditing];

end;

{ }

procedure TForm1.N5Click(Sender: TObject);

var

f: TField;

begin

Caption:= '';

_state:= ST_MENU;

ClientDataSet1.Close;

DataSetProvider1.DataSet:= qMenu;

ClientDataSet1.Open;

DBGrid1.Columns[0].Visible:= false;

DBGrid1.Columns[1].Visible:= false;

DBGrid1.Columns[2].Title.Caption:= ' ';

DBGrid1.Columns[2].Width:= 200;

DBGrid1.Columns[3].Title.Caption:= ' ()';

DBGrid1.Columns[3].Width:= 60;

DBGrid1.Columns[3].Field.SetFieldType(ftCurrency);

DBGrid1.Options:= DBGrid1.Options - [dgEditing];

end;//

procedure TForm1.N6Click(Sender: TObject);

begin

Caption:= '';

_state:= ST_ORDER;

ClientDataSet1.Close;

DataSetProvider1.DataSet:= qOrders;

ClientDataSet1.Open;

DBGrid1.Columns[0].Visible:= false;

DBGrid1.Columns[1].Visible:= false;

DBGrid1.Columns[2].Visible:= false;

DBGrid1.Columns[3].Title.Caption:= ' ';

DBGrid1.Columns[3].Width:= 200;

DBGrid1.Columns[4].Title.Caption:= '-';

DBGrid1.Columns[4].Width:= 50;

DBGrid1.Columns[5].Title.Caption:= ' ';

DBGrid1.Columns[5].Width:= 120;

DBGrid1.Columns[5].Field.SetFieldType(ftDateTime);

DBGrid1.Columns[6].Title.Caption:= '';

DBGrid1.Columns[6].Width:= 100;

DBGrid1.Options:= DBGrid1.Options - [dgEditing];

end;//

procedure TForm1.N7Click(Sender: TObject);

begin

Caption:= '';

_state:= ST_MNG;

ClientDataSet1.Close;

DataSetProvider1.DataSet:= qMng;

ClientDataSet1.Open;

DBGrid1.Refresh;

DBGrid1.Columns[0].Visible:= false;

DBGrid1.Columns[1].Title.Caption:= '';

DBGrid1.Columns[1].Width:= 200;

DBGrid1.Columns[2].Title.Caption:= '';

DBGrid1.Columns[2].Width:= 200;

DBGrid1.Columns[3].Title.Caption:= '';

DBGrid1.Columns[3].Width:= 200;

DBGrid1.Columns[4].Title.Caption:= '';

DBGrid1.Columns[4].Width:= 200;

DBGrid1.Options:= DBGrid1.Options + [dgEditing];

end;

procedure TForm1.N9Click(Sender: TObject);

begin

_state:= ST_NONE;

Caption:= '';

try

ClientDataSet1.Close;

q.Close;

q.SQL.Text:=

'select orders.id_orders as " ", dish.title as "", ' +

'orders.cnt as "", menu.price as "", ' +

'(orders.cnt * menu.price) as "" ' +

'from orders ' +

'left join dish on (orders.id_dish = dish.id_dish) ' +

'left join menu on (dish.id_dish = menu.id_dish)' +

'order by orders.id_orders';

q.Open;

q.FieldByName('').AsCurrency;

q.FieldByName('').AsCurrency;

DataSetProvider1.DataSet:= q;

ClientDataSet1.Open;

DBGrid1.Columns[1].Width:= 200;

except on e:Exception do

MessageBox(0, ' ""!', '', MB_OK + MB_ICONWARNING);

end;

DBGrid1.Options:= DBGrid1.Options - [dgEditing];

end;

end.

uMenuRec:

unit uMenuRec;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

StdCtrls, ExtCtrls,

Mbd_MySql;

Type

TDishRec = class

id_dish: integer;

title: string;

end;

TFormMenuRec = class(TForm)

cbDish: TComboBox;

Panel1: TPanel;

edPrice: TEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

_mode: integer; // 1 - new, 2 - edit

_db: TMbd_MySql;

_id_menu: integer;

public

procedure showNew(aDB: TMbd_MySql);

procedure showEdit(aDB: TMbd_MySql; id_menu: integer; id_dish: integer; price: Currency);

end;

var

FormMenuRec: TFormMenuRec;

Implementation

{$R *.dfm}

const

sql_req: string = 'select * from dish';//

procedure TFormMenuRec.Button1Click(Sender: TObject);

begin

Close;

end;

// ok

procedure TFormMenuRec.Button2Click(Sender: TObject);

var

req: string;

rec: TDishRec;

begin

//

if (cbDish.ItemIndex < 0) then

begin

MessageBox(0, ' .',

'', MB_ICONWARNING + MB_OK);

cbDish.SetFocus;

Exit;

end;

if (Length(edPrice.Text) <= 0) then

begin

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

edPrice.SetFocus;

Exit;

end;

case _mode of

1: // new

begin

rec:= cbDish.Items.Objects[cbDish.ItemIndex] as TDishRec;

req:= 'insert into menu (id_dish, price) values(' + IntToStr(rec.id_dish) + ', ' + edPrice.Text + ')';

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, ' .', '', MB_ICONINFORMATION + MB_OK);

Close;

end

else

begin

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

end;

end;

2: // edit

begin

rec:= cbDish.Items.Objects[cbDish.ItemIndex] as TDishRec;

req:= 'update menu set id_dish = ' + IntToStr(rec.id_dish) + ', price = ' + edPrice.Text + ' where id_menu = ' + IntToStr(_id_menu);

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, ' .', '', MB_ICONINFORMATION + MB_OK);

Close;

end

else

begin

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

end;

end;

end;

end;

procedure TFormMenuRec.showNew(aDB: TMbd_MySql);

var

rec: TDishRec;

begin

Caption:= ' ';

_mode:= 1;

_db:= aDB;

cbDish.Items.Clear;

cbDish.ItemIndex:= -1;

edPrice.Text:= '';

// SELECT

aDB.M_Open(sql_req); //

while aDB.M_NoEnd do //

begin

rec:= TDishRec.Create;

rec.id_dish:= aDB.M_Value('id_dish');

rec.title:= aDB.M_Value('title');

cbDish.Items.AddObject(rec.title, rec);

aDB.M_Next; //

end;

aDB.M_Close; //

ShowModal;

end;

procedure TFormMenuRec.showEdit(aDB: TMbd_MySql; id_menu: integer; id_dish: integer; price: Currency);

var

rec: TDishRec;

begin

Caption:= ' ';

_mode:= 2;

_db:= aDB;

_id_menu:= id_menu;

cbDish.Items.Clear;

// SELECT

aDB.M_Open(sql_req); //

while aDB.M_NoEnd do //

begin

rec:= TDishRec.Create;

rec.id_dish:= aDB.M_Value('id_dish');

rec.title:= aDB.M_Value('title');

cbDish.Items.AddObject(rec.title, rec);

if (rec.id_dish = id_dish) then

cbDish.ItemIndex:= cbDish.Items.Count - 1;

aDB.M_Next; //

end;

aDB.M_Close; //

 

edPrice.Text:= CurrToStr(price);

ShowModal;

end;

end.

uOrderRec:

unit uOrderRec;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

StdCtrls, ExtCtrls,

Mbd_MySql;

type

TDishRec = class

id_dish: integer;

title: string;

end;

TMngRec = class

id_mng: integer;

fam: string;

end;

TFormOrders = class(TForm)

Label1: TLabel;

cbDish: TComboBox;

Label2: TLabel;

edCnt: TEdit;

Panel1: TPanel;

Button1: TButton;

Button2: TButton;

cbMng: TComboBox;

Label3: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

_mode: integer; // 1 - new, 2 - edit

_db: TMbd_MySql;

_id_orders: integer;

procedure fillMngs();

procedure fillDishes();

public

procedure showNew(aDB: TMbd_MySql);

procedure showEdit(aDB: TMbd_MySql; id_orders, id_dish, id_mng: integer; cnt: integer);

end;

var

FormOrders: TFormOrders;

Implementation

{$R *.dfm}

procedure TFormOrders.fillMngs();

var

rec: TMngRec;

begin

cbMng.Items.Clear;

cbMng.ItemIndex:= -1;

//

_db.M_Open('select * from manager order by f'); //

while _db.M_NoEnd do //

begin

rec:= TMngRec.Create;

rec.id_mng:= _db.M_Value('id_manager');

rec.fam:= _db.M_Value('f');

cbMng.Items.AddObject(rec.fam, rec);

_db.M_Next; //

end;

_db.M_Close; //

end;

procedure TFormOrders.Button1Click(Sender: TObject);

begin

Close;

end;

procedure TFormOrders.Button2Click(Sender: TObject);

var

req: string;

drec: TDishRec;

mrec: TMngRec;

begin

//

if (cbDish.ItemIndex < 0) then

begin

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

cbDish.SetFocus;

Exit;

end;

if (cbMng.ItemIndex < 0) then

begin

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

cbMng.SetFocus;

Exit;

end;

if (Length(edCnt.Text) <= 0) then

begin

MessageBox(0, '- .', '', MB_ICONWARNING + MB_OK);

edCnt.SetFocus;

Exit;

end;

drec:= cbDish.Items.Objects[cbDish.ItemIndex] as TDishRec;

mrec:= cbMng.Items.Objects[cbMng.ItemIndex] as TMngRec;

case _mode of

1: // new

begin

req:= 'insert into orders (id_dish, id_manager, cnt) values(' + IntToStr(drec.id_dish) + ', ' + IntToStr(mrec.id_mng) + ', ' + edCnt.Text + ')';

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, ' .', '', MB_ICONINFORMATION + MB_OK);

Close;

end

else

begin

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

end;

end;

2: // edit

begin

req:= 'update orders set id_dish = ' + IntToStr(drec.id_dish) + ', id_manager = ' + IntToStr(mrec.id_mng) + ', cnt = ' + edCnt.Text + ' where id_orders = ' + IntToStr(_id_orders);

if (_db.DdlExecute(req) = 1) then

begin

MessageBox(0, ' .', '', MB_ICONINFORMATION + MB_OK);

Close;

end

else

MessageBox(0, ' .', '', MB_ICONWARNING + MB_OK);

end;

end;

end;

procedure TFormOrders.fillDishes();

var

rec: TDishRec;

begin

cbDish.Items.Clear;

cbDish.ItemIndex:= -1;

//

_db.M_Open('select * from menu left join dish on menu.id_dish = dish.id_dish order by title'); //

while _db.M_NoEnd do //

begin

rec:= TDishRec.Create;

rec.id_dish:= _db.M_Value('id_dish');

rec.title:= _db.M_Value('title');

cbDish.Items.AddObject(rec.title, rec);

_db.M_Next; //

end;

_db.M_Close; //

end;

procedure TFormOrders.showNew(aDB: TMbd_MySql);

begin

Caption:= ' ';

_mode:= 1;

_db:= aDB;

edCnt.Text:= '1';

fillMngs;

fillDishes;

ShowModal;

end;

procedure TFormOrders.showEdit(aDB: TMbd_MySql; id_orders, id_dish, id_mng: integer; cnt: integer);

var

rec: TDishRec;

i: Integer;

begin

Caption:= ' ';

_mode:= 2;

_db:= aDB;

_id_orders:= id_orders;

fillMngs;

fillDishes;

for i:= 0 to cbDish.Items.Count - 1 do

if (TDishRec(cbDish.Items.Objects[i]).id_dish = id_dish) then

cbDish.ItemIndex:= i;

for i:= 0 to cbMng.Items.Count - 1 do

if (TMngRec(cbMng.Items.Objects[i]).id_mng = id_mng) then

cbMng.ItemIndex:= i;

edCnt.Text:= intToStr(cnt);

ShowModal;

end;

end.

 



<== | ==>
| : ( ).
:


: 2016-11-12; !; : 288 |


:

:

.
==> ...

1710 - | 1663 -


© 2015-2024 lektsii.org - -

: 0.392 .