
Информационное обеспечение систем управления
Лабораторная работа №4-6
Выполнила: Семина Т.
Группа И-41
-
Форма таблицы изделий:
-
Текст модуля:
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.
-
Форма таблицы изделий:
-
Текст модуля:
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.
-
Форма счета:
-
Текст модуля:
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.