Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
20.06.2014
Размер:
179.2 Кб
Скачать

Информационное обеспечение систем управления

Лабораторная работа №4-6

Выполнила: Семина Т.

Группа И-41

  1. Форма таблицы изделий:

  1. Текст модуля:

unit Unit3;

interface

uses

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

Dialogs, DBTables, StdCtrls, DB, Grids, DBGrids, Menus;

type

TFIzdel = class(TForm)

DBGIzdel: TDBGrid;

tbIzdel: TTable;

DataSource1: TDataSource;

Poisk: TEdit;

Label1: TLabel;

Query1: TQuery;

MainMenu1: TMainMenu;

close: TMenuItem;

procedure DBGIzdelExit(Sender: TObject);

procedure tbIzdelBeforePost(DataSet: TDataSet);

procedure FormActivate(Sender: TObject);

procedure tbIzdelAfterInsert(DataSet: TDataSet);

procedure Butt_FindClick(Sender: TObject);

procedure PoiskChange(Sender: TObject);

procedure tbIzdelBeforeDelete(DataSet: TDataSet);

procedure Butt_CloseClick(Sender: TObject);

procedure closeClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FIzdel: TFIzdel;

implementation

{$R *.dfm}

procedure TFIzdel.DBGIzdelExit(Sender: TObject);

begin

if (tbIzdel.State=dsEdit) or (tbIzdel.State=dsInsert) then

tbIzdel.Post;

end;

procedure TFIzdel.tbIzdelBeforePost(DataSet: TDataSet);

begin

if MessageDlg('Сохранить изменения?’,mtConfirmation,[mbYes,mbNo],0)=mrNo then

begin

tbIzdel.Cancel;

tbIzdel.Prior;

tbIzdel.Next;

Abort;

end;

end;

procedure TFIzdel.FormActivate(Sender: TObject);

begin

tbIzdel.Active:=true;

end;

procedure TFIzdel.tbIzdelAfterInsert(DataSet: TDataSet);

var i:integer;

begin

query1.Close;

query1.SQL.clear;

query1.SQL.Add('SELECT vse_tov.Kod_izdelia FROM vse_tov');

query1.open;

query1.last;

i:=strtoint(query1['Kod_izdelia'])+1;

tbIzdel['Kod_izdelia']:=inttostr(i);

query1.close;

end;

procedure TFIzdel.Butt_FindClick(Sender: TObject);

begin

TbIzdel.FindNearest([edit1.Text]);

end;

procedure TFIzdel.PoiskChange(Sender: TObject);

begin

TbIzdel.FindNearest([edit1.Text]);

end;

procedure TFIzdel.tbIzdelBeforeDelete(DataSet: TDataSet);

begin

query1.Close;

query1.SQL.clear;

query1.SQL.Add('SELECT Detaile.Kod_izdelia FROM Detaile');

query1.open;

if query1.Locate('Kod_izdelia',tbIzdel['Kod_izdelia'],[])=true then

begin

showmessage('Удалить запись нельзя');

abort;

end

else

if MessageDlg(‘Удалить запись?',mtConfirmation,[mbYes,mbNo],0)=mrNo then

abort;

query1.close;

end;

procedure TFIzdel.closeClick(Sender: TObject);

begin

Close;

end;

end.

  1. Форма таблицы изделий:

  1. Текст модуля:

unit Unit4;

interface

uses

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

Dialogs, DB, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls,unit5;

type

TForm4 = class(TForm)

DBGrid_Zakaz: TDBGrid;

DBGrid_Detail: TDBGrid;

TbZakaz: TTable;

DataSource1: TDataSource;

DataSource2: TDataSource;

TbDetail: TTable;

DBNavigator1: TDBNavigator;

Label1: TLabel;

tbZakazchik: TTable;

TbZakazNomer_zakaza: TSmallintField;

TbZakazData_zakaza: TDateField;

TbZakazKod_zakazchika: TSmallintField;

TbZakazNazvanie: TStringField;

TbZakazSum: TCurrencyField;

Query_Detail: TQuery;

TbDetailPervichnyi_Key: TAutoIncField;

TbDetailNomer_zakaza: TSmallintField;

TbDetailKod_izdelia: TSmallintField;

TbDetailKoli4estvo_v_zakaze: TSmallintField;

TbTovar: TTable;

TbDetailName: TStringField;

TbDetailSum: TCurrencyField;

Label2: TLabel;

Button1: TButton;

procedure DBGrid_ZakazEnter(Sender: TObject);

procedure DBGrid_DetailEnter(Sender: TObject);

procedure TbZakazCalcFields(DataSet: TDataSet);

procedure TbDetailCalcFields(DataSet: TDataSet);

procedure FormActivate(Sender: TObject);

procedure TbZakazBeforePost(DataSet: TDataSet);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure TbZakazBeforeDelete(DataSet: TDataSet);

procedure TbZakazAfterInsert(DataSet: TDataSet);

procedure TbDetailBeforePost(DataSet: TDataSet);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4; Max:integer;

implementation

{$R *.dfm}

procedure TForm4.DBGrid_ZakazEnter(Sender: TObject);

begin

DBNavigator1.DataSource:=DataSource1;

end;

procedure TForm4.DBGrid_DetailEnter(Sender: TObject);

begin

DBNavigator1.DataSource:=DataSource2;

end;

procedure TForm4.TbZakazCalcFields(DataSet: TDataSet);

var s1,s2,s3,s4:string;

begin

s1:='SELECT zakaz.nomer_zakaza,SUM(vse_tov.cena_edinicy*detaile.koli4estvo_v_zakaze) AS Summa ';

s2:='FROM zakazchik, detaile, vse_tov, zakaz ';

s3:='WHERE (zakazchik.kod_zakazchika=zakaz.kod_zakazchika)and(zakaz.nomer_zakaza=detaile.nomer_zakaza)';

s4:='and(detaile.Kod_izdelia=vse_tov.Kod_izdelia) GROUP BY zakaz.nomer_zakaza';

query_Detail.close;

query_Detail.sql.clear;

query_Detail.Sql.Add(s1+s2+s3+s4);

query_Detail.Open;

query_Detail.Locate('Nomer_zakaza',tbZakaz['Nomer_zakaza'],[]);

tbZakaz['Sum']:=query_Detail['summa'];

query_Detail.close;

end;

procedure TForm4.TbDetailCalcFields(DataSet: TDataSet);

begin

tbTovar.Locate('Kod_izdelia',tbDetail['Kod_izdelia'],[]);

tbDetail['Sum']:=tbDetail['Koli4estvo_v_zakaze']*tbTovar['Cena_edinicy'];

end;

procedure TForm4.FormActivate(Sender: TObject);

begin

tbZakazchik.Active:=true;

tbTovar.Active:=true;

tbZakaz.Active:=true;

tbDetail.Active:=true;

query_Detail.close;

query_Detail.sql.clear;

query_Detail.Sql.Add('select max(nomer_zakaza) as maks from detaile');

query_Detail.Open;

max:=strtoint(query_Detail['maks']);

end;

procedure TForm4.TbZakazBeforePost(DataSet: TDataSet);

begin

if MessageDlg('Сохранить изменения?’,mtConfirmation,[mbYes,mbNo],0)=mrNo then

begin

tbZakaz.Cancel;

tbZakaz.Prior;

tbZakaz.Next;

Abort;

end;

end;

procedure TForm4.Formclose(Sender: TObject; var Action: TCloseAction);

begin

tbZakaz.Active:=false;

tbZakazchik.Active:=false;

tbDetail.Active:=false;

tbTovar.Active:=false;

end;

procedure TForm4.TbZakazBeforeDelete(DataSet: TDataSet);

begin

query_Detail.Close;

query_Detail.SQL.clear;

query_Detail.SQL.Add('SELECT Detaile.Nomer_zakaza FROM Detaile');

query_Detail.open;

if query_Detail.Locate('Nomer_zakaza',tbZakaz['Nomer_zakaza'],[])=true then

begin

showmessage('Удалить запись нельзя');

abort;

end

else

if MessageDlg('Удалить запись?',mtConfirmation,[mbYes,mbNo],0)=mrNo then

abort;

query_Detail.close;

end;

procedure TForm4.TbZakazAfterInsert(DataSet: TDataSet);

begin

max:=max+1;

tbZakaz['Nomer_Zakaza']:=inttostr(max);

end;

procedure TForm4.TbDetailBeforePost(DataSet: TDataSet);

begin

if MessageDlg ('сохранить изменения',mtConfirmation,[mbYes,mbNo],0)=mrNo 0then

begin

tbDetail.Cancel;

tbDetail.Prior;

tbDetail.Next;

Abort;

end;

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

Application.CreateForm(TForm5, Form5); Form5.query.params[0].AsInteger:=tbZakaz.FieldByName('Nomer_zakaza').AsInteger;

Form5.query.open;

//Form5.QuickRep1.Preview;

end;

end.

  1. Форма счета:

  1. Текст модуля:

unit Unit5;

interface

uses

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

Dialogs, QuickRpt, QRCtrls, DB, DBTables, ExtCtrls;

type

TForm5 = class(TForm)

Query: TQuery;

QuickRep1: TQuickRep;

TitleBand1: TQRBand;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

SummaryBand1: TQRBand;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRLabel6: TQRLabel;

QRLabel7: TQRLabel;

QRLabel8: TQRLabel;

QRLabel9: TQRLabel;

QRDB_Nomer: TQRDBText;

QRDB_data: TQRDBText;

QRDB_name: TQRDBText;

QRDBT_gorod: TQRDBText;

QRDB_ulica: TQRDBText;

QRDB_dom: TQRDBText;

QRDB_kvartira: TQRDBText;

QRLabel10: TQRLabel;

QRLabel11: TQRLabel;

QRLabel12: TQRLabel;

QRLabel13: TQRLabel;

QRDB_nazv: TQRDBText;

QRDB_cena: TQRDBText;

QRDB_kol: TQRDBText;

QRDB_sum: TQRDBText;

QRLabel14: TQRLabel;

QRExpr_vsego: TQRExpr;

QRShape1: TQRShape;

QRShape4: TQRShape;

QRLabel15: TQRLabel;

QRShape2: TQRShape;

QRShape6: TQRShape;

procedure QuickRep1AfterPreview(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit4;

{$R *.dfm}

procedure TForm5.QuickRep1AfterPreview(Sender: TObject);

begin

query.Close;

end;

end.