Смекни!
smekni.com

Учёт поступления и выдачи книг (стр. 7 из 8)

close;

end;

procedure TForm2.Button1Click(Sender: TObject);

var i,ost:integer;

za:array [0..3] of string;

begin

dm6.T1.Close;

dm6.T2.Close;

dm6.T3.Close;

dm6.T1.Open;

dm6.T2.Open;

dm6.T3.Open;

DM6.T1.RecNo:=1;

DM6.T2.RecNo:=1;

DM6.T3.RecNo:=1;

za[0]:=edit1.Text;

za[1]:=edit2.Text;

za[2]:=edit3.Text;

za[3]:=edit4.Text;

//заявка

if unit1.kn=0 then

if (edit1.Text='')and(edit2.Text='')and(edit3.Text='')and(edit4.Text='')then

messageBox(0,'Заполни все поля','Ошибка',0)

else

begin

Продолжение приложения Б

DM6.T2.Append;

DM6.T2.FieldByName('Магазин').AsString:=za[3];

DM6.T2.FieldByName('Наз. книги').AsString:=za[0];

DM6.T2.FieldByName('Автор').AsString:=za[1];

DM6.T2.FieldByName('Треб. кол').AsString:=za[2];

DM6.T2.Post;

DM6.T2.Refresh;

ost:=strtoint(za[2]);

while ((ost<>0) and (not(DM6.T1.Eof))) do

begin

if (DM6.T1.FieldByName('Наз. книги').AsString=za[0])and(DM6.T1.FieldByName('Автор').AsString=za[1]) then

begin

if ost>=DM6.T1.fieldbyname('Тираж').AsInteger then

begin

ost:=ost-DM6.T1.fieldbyname('Тираж').AsInteger;

DM6.T2.Edit;

DM6.T2.FieldByName('Треб. кол').AsInteger:=ost;

DM6.T2.Post;

DM6.T2.Refresh;

DM6.T3.AppendRecord([DM6.T2.FieldByName('№ заказа').AsInteger,DM6.T1.FieldByName('Издательство').AsString,

DM6.T1.fieldbyname('Тираж').AsInteger,DM6.T1.fieldbyname('Цена').AsInteger,

DM6.T1.fieldbyname('Тираж').AsInteger*DM6.T1.fieldbyname('Цена').AsInteger]);

DM6.T3.Refresh;

DM6.T1.Edit;

DM6.T1.Delete;

DM6.T1.Refresh;

end

else

begin

DM6.T1.Edit;

DM6.T1.fieldbyname('Тираж').AsInteger:=DM6.T1.fieldbyname('Тираж').AsInteger-ost;

Продолжение приложения Б

DM6.T1.Post;

DM6.T1.Refresh;

DM6.T3.AppendRecord([DM6.T2.FieldByName('№ заказа').AsInteger,DM6.T1.FieldByName('Издательство').AsString,

strtoint(za[2]),DM6.T1.fieldbyname('Цена').AsInteger,DM6.T1.fieldbyname('Цена').AsInteger*strtoint(za[2])]);

DM6.T2.Edit;

DM6.T2.FieldByName('Треб. кол').AsInteger:=0;

DM6.T2.Post;

ost:=0;

DM6.T3.Refresh;

end;

end;

DM6.T1.Next;

end;

f1.clearf2;

end;

if unit1.kn=1 then

begin

DM6.T2.Append;

DM6.T2.FieldByName('Магазин').AsString:=za[3];

DM6.T2.FieldByName('Наз. книги').AsString:=za[0];

DM6.T2.FieldByName('Автор').AsString:=za[1];

DM6.T2.FieldByName('Треб. кол').AsString:=za[2];

DM6.T2.Post;

DM6.T2.Refresh;

f1.clearf2;

end;

//получение книг

if unit1.kn=2 then

if (edit1.Text='')and(edit2.Text='')and(edit3.Text='')and(edit4.Text='')and(edit5.Text='')then

messageBox(0,'Заполни все поля','Ошибка',0)

Продолжение приложения Б

else

begin

//добавление если такая запись уже существует

if not varisnull(DM6.T1.Lookup('Издательство;Наз. книги;Автор;Цена',VarArrayOf([za[3], za[0], za[1], Edit5.text]),'Цена')) then

begin

messageBox(0,'Данная книга уже существует','Ошибка',0);

MessageBox(0,'Тираж добавиться к существующей книге','Соощение',0);

DM6.T1.Locate('Издательство;Наз. книги;Автор;Тираж;Цена',VarArrayOf([za[3], za[0], za[1], za[2], Edit5.text]),[]);

DM6.T1.Edit;

DM6.T1.FieldByName('Тираж').AsInteger:=DM6.T1.FieldByName('Тираж').AsInteger+strtoint(za[2]);

DM6.T1.Post;

DM6.T1.Refresh;

f1.clearf2;

end

else

begin

//добление новой записи

DM6.T1.Append;

DM6.T1.FieldByName('Издательство').AsString:=za[3];

DM6.T1.FieldByName('Наз. книги').AsString:=za[0];

DM6.T1.FieldByName('Автор').AsString:=za[1];

DM6.T1.FieldByName('Тираж').AsString:=za[2];

DM6.T1.FieldByName('Цена').AsString:=Edit5.text;

DM6.T1.Post;

DM6.T1.Refresh;

f1.clearf2;

end;

//просмотр необработанных заявок

if MessageBox(0,'Просмотреть необработанные заявки','Соощение',mb_YesNo)=6 then

Продолжение приложения Б

if (DM6.T2.Locate('Наз. книги;Автор;',VarArrayOf([za[0], za[1]]),[]))and(DM6.T2.FieldByName('Треб. кол').AsInteger<>0) then

begin

DM6.T1.Locate('Издательство;Наз. книги;Автор;',VarArrayOf([za[3], za[0], za[1]]),[]);

if DM6.T2.FieldByName('Треб. кол').AsInteger>=strtoint(za[2]) then

begin

DM6.T3.Append;

DM6.T3.FieldByName('№ заказа').AsString:=DM6.T2.FieldByName('№ заказа').AsString;

DM6.T3.FieldByName('Издательство').AsString:=za[3];

DM6.T3.FieldByName('Выдано').AsString:=za[2];

DM6.T3.FieldByName('Цена').AsString:=DM6.T1.fieldbyname('Цена').asstring;

DM6.T3.FieldByName('Сумма').AsInteger:=strtoint(za[2])*DM6.T1.fieldbyname('Цена').asinteger;

DM6.T3.Post;

DM6.T3.Refresh;

DM6.T3.Open;

DM6.T1.Edit;

DM6.T1.Delete;

DM6.T1.Refresh;

DM6.T2.Edit;

DM6.T2.FieldByName('Треб. кол').AsInteger:=DM6.T2.FieldByName('Треб. кол').AsInteger-strtoint(za[2]);

DM6.T2.Post;

DM6.T2.Refresh;

end

else

begin

DM6.T3.Append;

DM6.T3.FieldByName('№ заказа').AsString:=DM6.T2.FieldByName('№ заказа').AsString;

DM6.T3.FieldByName('Издательство').AsString:=za[3];

Продолжение приложения Б

DM6.T3.FieldByName('Выдано').AsInteger:=DM6.T2.FieldByName('Треб. кол').AsInteger;

DM6.T3.FieldByName('Цена').AsString:=DM6.T1.fieldbyname('Цена').asstring;

DM6.T3.FieldByName('Сумма').AsInteger:=strtoint(za[2])*DM6.T1.fieldbyname('Цена').asinteger;

DM6.T3.Post;

DM6.T3.Refresh;

DM6.T1.Edit;

DM6.T1.FieldByName('Тираж').AsInteger:=strtoint(za[2])-DM6.T2.FieldByName('Треб. кол').AsInteger;

DM6.T1.Post;

DM6.T1.Refresh;

DM6.T2.Edit;

DM6.T2.FieldByName('Треб. кол').AsInteger:=0;

DM6.T2.Post;

DM6.T2.Refresh;

end;

end;

end;

//удаление

if unit1.kn=3 then

if (edit4.Text='') then

messageBox(0,'Заполни все поля','Ошибка',0)

else

if ComboBox1.ItemIndex=-1 then messageBox(0,'Выбери таблицу','Ошибка',0)

else

case ComboBox1.ItemIndex of

0:

if DM6.T1.Locate('ID',edit4.Text,[])=false then messageBox(0,'Данной записи не существует!','Ошибка',0)

else

begin

DM6.T1.Edit;

DM6.T1.Delete;

DM6.T1.Refresh;

Продолжение приложения Б

end;

1:

if DM6.T2.Locate('№ заказа',edit4.Text,[])=false then messageBox(0,'Данной записи не существует!','Ошибка',0)

else

if MessageBox(0,'Вы нарушите целостность данных'+#13+'Продолжить?','Опасность',mb_YesNo)=6 then

begin

DM6.T2.Edit;

DM6.T2.Delete;

DM6.T2.Refresh;

end;

2:

if DM6.T3.Locate('№ заказа',edit4.Text,[])=false then messageBox(0,'Данной записи не существует!','Ошибка',0)

else

if MessageBox(0,'Вы нарушите целостность данных'+#13+'Продолжить?','Опасность',mb_YesNo)=6 then

begin

DM6.T3.Edit;

DM6.T3.Delete;

DM6.T3.Refresh;

end;

end;

DM6.T1.RecNo:=1;

end;

procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9':;

#8:;

else key:=chr(0);

end;

end;

Продолжение приложения Б

procedure TForm2.Edit5KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9':;

#8:;

else key:=chr(0);

end;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, Grids;

type

TForm3 = class(TForm)

SG1: TStringGrid;

Button1: TButton;

procedure Button1Click(Sender: TObject);

end;

var

F3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin

close;

end;

end.

unit Unit4;

interface

uses

Продолжение приложения Б

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

Dialogs, StdCtrls, registry;

type

TForm4 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

GroupBox1: TGroupBox;

Edit2: TEdit;

Label2: TLabel;

Button1: TButton;

CheckBox1: TCheckBox;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

end;

var

F4: TForm4;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);

var

Reg:TRegistry;

begin