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

Разработка приложения. Интерфейс программы.

Главная форма программы позволяет перемещаться в любой из разделов базы данных:

  • Информация о фирмах поставщиках

  • Информация о фирмах покупателях

  • Просмотр склада оптовой фирмы

  • Просмотр приходных накладных

  • Просмотр приходных накладных

  • Просмотр сведений о банках

Рис. 3

При нажатии на кнопку «Поставщики» отображается информация о поставщиках. Перемещение по записям осуществляется с помощью навигатора. Также на форме можно осуществлять поиск, причем, по названию фирмы.

Рис. 4

При нажатии на кнопку «Покупатели» отображается аналогичная информация о фирмах покупателях. Как и в предыдущем пункте перемещение организовано с помощью навигатора и имеется поиск по названию фирмы.

Рис. 5.

При нажатии на кнопку «Склад» отображается форма с полной информацией о наличии товаров на складе:

  • Артикул

  • Название

  • Цена за ед.

  • Остаток на начало месяца

  • Приход

  • Расход

  • Текущий остаток

На форме можно добавить или удалить (не нарушается целостность БД) новое наименование товара, а также сделать перерасчет на начало месяца.

Рис. 6

При нажатии на кнопку «Приход» отображается форма с информацией о приходных накладных. При нажатии на кнопки «Печать накладной» и «Платежи по накладным» генерируется приходная накладная для печати и информация о платежах соответственно. Также можно произвести удаление оплаченных накладных за прошлый месяц (удаление осуществляется каскадно, при котором не нарушается целостность БД). Перемещение по записям осуществляется с помощью навигатора.

Рис. 7

При нажатии на кнопку «Расход» отображается форма с информацией о Расходных накладных. При нажатии на кнопки «Печать накладной» генерируется расходная накладная для. Также можно произвести удаление оплаченных накладных за прошлый месяц (удаление осуществляется каскадно, при котором не нарушается целостность БД). Перемещение по записям осуществляется с помощью навигатора.

Рис. 8

При нажатии «Сведения о банках» отображается информация о банках, работающих с фирмами поставщика и покупателя. Перемещение осуществляется с помощью навигатора, имеется поиск по названию банка.

Рис. 9

Код программы.

Главная форма программы.

unit Unit1;

interface

uses

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

Dialogs, XPMan, Buttons, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

BitBtn1: TBitBtn;

XPManifest1: TXPManifest;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, DateUtils;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2:=TForm2.Create(Application);

Form2.ShowModal;

Form2.Free;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Form3:=TForm3.Create(Application);

Form3.ShowModal;

Form3.Free;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Form4:=TForm4.Create(Application);

Form4.ShowModal;

Form4.Free;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Form5:=TForm5.Create(Application);

Form5.ShowModal;

Form5.Free;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Form6:=TForm6.Create(Application);

Form6.ShowModal;

Form6.Free;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Form7:=TForm7.Create(Application);

Form7.ShowModal;

Form7.Free;

end;

end.

Форма с информацией о поставщиках

unit Unit2;

interface

uses

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

Dialogs, DBCtrls, DB, StdCtrls, Mask, DBTables, ExtCtrls, Buttons;

type

TForm2 = class(TForm)

Table1: TTable;

DataSource1: TDataSource;

DBEdit1: TDBEdit;

Label1: TLabel;

Label2: TLabel;

DBEdit2: TDBEdit;

Label3: TLabel;

DBEdit3: TDBEdit;

Table2: TTable;

Label4: TLabel;

DBEdit4: TDBEdit;

Label5: TLabel;

Table1Code_Post: TAutoIncField;

Table1Nazv_Post: TStringField;

Table1FIO_Post: TStringField;

Table1Tel_Post: TStringField;

Table1Adr_Post: TStringField;

Table1Bank_Post: TSmallintField;

Table1S_Post: TStringField;

DBEdit6: TDBEdit;

Label6: TLabel;

Table1N_Bank_Post: TStringField;

DBNavigator1: TDBNavigator;

DBLookupComboBox1: TDBLookupComboBox;

BitBtn1: TBitBtn;

Table3: TTable;

Edit1: TEdit;

Button1: TButton;

procedure Table1BeforeDelete(DataSet: TDataSet);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Table1BeforeDelete(DataSet: TDataSet);

var codep:integer;

begin

codep:=Table1.FieldValues['Code_Post'];

if Table3.Locate('ID_Post',codep,[]) then

begin

ShowMessage('Запись удалить невозможно');

Abort;

end

else

begin

if MessageDlg('Удалить запись',mtConfirmation,[mbOK,mbCancel],0)=1 then Table1.Delete else Abort;

end;

end;

procedure TForm2.Button1Click(Sender: TObject);

begin

Table1.Locate('Nazv_Post',Edit1.Text,[loPartialKey,loCaseInsensitive]);

end;

end.

Форма с информацией о покупателях.

unit Unit3;

interface

uses

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

Dialogs, ExtCtrls, DBCtrls, StdCtrls, Mask, DB, DBTables, Buttons;

type

TForm3 = class(TForm)

Label5: TLabel;

Label4: TLabel;

Label3: TLabel;

Label6: TLabel;

Label2: TLabel;

Label1: TLabel;

Table1: TTable;

Table2: TTable;

DataSource1: TDataSource;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

DBLookupComboBox1: TDBLookupComboBox;

DBEdit5: TDBEdit;

DBNavigator1: TDBNavigator;

Table1Code_Pokup: TAutoIncField;

Table1Name_Pokup: TStringField;

Table1FIO_Pokup: TStringField;

Table1Tel_Pokup: TStringField;

Table1Adr_Pokup: TStringField;

Table1Bank_Pokup: TSmallintField;

Table1S_Pokup: TStringField;

Table1N_Bank_Pokup: TStringField;

BitBtn1: TBitBtn;

Table3: TTable;

Edit1: TEdit;

Button1: TButton;

procedure Table1BeforeDelete(DataSet: TDataSet);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Table1BeforeDelete(DataSet: TDataSet);

var codep:integer;

begin

codep:=Table1.FieldValues['Code_Pokup'];

if Table3.Locate('ID_Pokup',codep,[]) then

begin

ShowMessage('Запись удалить невозможно');

Abort;

end

else

begin

if MessageDlg('Удалить запись',mtConfirmation,[mbOK,mbCancel],0)=1 then Table1.Delete else Abort;

end;

end;

procedure TForm3.Button1Click(Sender: TObject);

begin

Table1.Locate('Name_Pokup',Edit1.Text,[loPartialKey,loCaseInsensitive]);

end;

end.

Форма «Склад»

unit Unit4;

interface

uses

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

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

Buttons;

type

TForm4 = class(TForm)

Table1: TTable;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Table1ID: TAutoIncField;

Table1Articul: TStringField;

Table1Nazv_T: TStringField;

Table1Cena: TCurrencyField;

Table1Ed_Izm: TStringField;

Table1Ost_NM: TIntegerField;

Table1Prihod_S: TCurrencyField;

Table1Ost_NM_S: TCurrencyField;

Table1Rashod_S: TCurrencyField;

Table1Tek_Ost_S: TCurrencyField;

Panel1: TPanel;

DBNavigator1: TDBNavigator;

TRN: TTable;

TPN: TTable;

Query1: TQuery;

Table1Prihod: TIntegerField;

Table1Rashod: TIntegerField;

Table1Tek_Ost: TIntegerField;

TPNID_PS: TAutoIncField;

TPNID_Tov_P: TSmallintField;

TPNKol_P: TIntegerField;

TPNID_PN: TSmallintField;

TRNID_RS: TAutoIncField;

TRNID_Tov_R: TSmallintField;

TRNKol_R: TIntegerField;

TRNID_RN: TSmallintField;

BitBtn1: TBitBtn;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Table1CalcFields(DataSet: TDataSet);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit8, DateUtils;

var flag:integer;

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);

begin

Form8:=TForm8.Create(Application);

Form8.ShowModal;

Form8.Free;

end;

procedure TForm4.Table1CalcFields(DataSet: TDataSet);

var day,month,year,nmonth,rmonth:Word;

cdate:string;

b:boolean;

begin

DecodeDate(Date,day,month,year);

Query1.SQL.Clear;

Query1.SQL.Add('SELECT Tovary.ID as ID, PNaklad.Data_Post as DataP, SUM(SostP.Kol_P) as PKol');

Query1.SQL.Add('FROM Tovary, SostP, PNaklad');

Query1.SQL.Add('WHERE Tovary.ID=SostP.ID_Tov_P AND PNaklad.ID=SostP.ID_PN GROUP BY Tovary.ID, PNaklad.Data_Post');

Query1.Active:=true;

b:=Query1.Locate('ID',Table1.FieldByName('ID').AsInteger,[]);

cdate:=Query1.FieldByName('DataP').AsString;

DecodeDate(StrToDate(cdate),day,nmonth,year);

if flag=0 then nmonth:=nmonth-1;

if (nmonth=month) and (b) then Table1.FieldByName('Prihod').AsInteger:=Query1.FieldByName('PKol').AsInteger

else Table1.FieldByName('Prihod').AsInteger:=0;

b:=False;

Table1.Active:=true;

Query1.Close;

//Расход

Query1.SQL.Clear;

Query1.SQL.Add('SELECT Tovary.ID, RNaklad.Data_Rash as DataR, SUM(SostR.Kol_R) as RKol');

Query1.SQL.Add('FROM Tovary, SostR, RNaklad');

Query1.SQL.Add('WHERE Tovary.ID=SostR.ID_Tov_R AND RNaklad.ID=SostR.ID_RN GROUP BY Tovary.ID, RNaklad.Data_Rash');

Query1.Active:=true;

b:=Query1.Locate('ID',Table1.FieldByName('ID').AsInteger,[]);

cdate:=Query1.FieldByName('DataR').AsString;

DecodeDate(StrToDate(cdate),day,rmonth,year);

if flag=0 then rmonth:=rmonth-1;

if (rmonth=month) and (b) then Table1.FieldByName('Rashod').AsInteger:=Query1.FieldByName('RKol').AsInteger

else Table1.FieldByName('Rashod').AsInteger:=0;

//Table1.FieldByName('Rashod').AsVariant := Query1.FieldByName('RKol').AsVariant;

Table1.Active:=true;

TRN.Active:=true;

If Not(TRN.Locate('ID_Tov_R',Table1.FieldByName('ID').AsVariant,[])) then Table1.FieldByName('Rashod').AsVariant:=0;

Query1.Close;

//Расчет остальных полей

with Table1 do

begin

FieldByName('Ost_NM_S').AsCurrency:=FieldByName('Ost_NM').AsInteger*FieldByName('Cena').AsCurrency;

FieldByName('Prihod_S').AsCurrency:=FieldByName('Prihod').AsInteger*FieldByName('Cena').AsCurrency;

FieldByName('Rashod_S').AsCurrency:=FieldByName('Rashod').AsInteger*FieldByName('Cena').AsCurrency;

FieldByName('Tek_Ost').AsVariant:=FieldByName('Ost_NM').AsInteger+FieldByName('Prihod').AsInteger-FieldByName('Rashod').AsInteger;

FieldByName('Tek_Ost_S').AsCurrency:=FieldByName('Ost_NM_S').AsCurrency+FieldByName('Prihod_S').AsCurrency+FieldByName('Rashod_S').AsCurrency;

end;

end;

procedure TForm4.Button2Click(Sender: TObject);

var ost,tost:Integer;

begin

ost:=Table1.FieldByName('Ost_NM').AsInteger;

tost:=Table1.FieldByName('Tek_Ost').AsInteger;

if (ost=0) and (tost=0) then Table1.Delete else

begin

ShowMessage('Запись удалить нельзя');

Abort;

end;

end;

procedure TForm4.Button3Click(Sender: TObject);

var f:TextFile;

day,month,year:word;

begin

DecodeDate(Date,day,month,year);

flag:=1;

Table1.AutoCalcFields:=false;

Table1.Active:=False;

Table1.ReadOnly:=False;

Table1.Active:=true;

Table1.Edit;

Table1.First;

while not Table1.Eof do

begin

Table1.Edit;

Table1.FieldByName('Ost_NM').Value:=Table1.FieldByName('Tek_Ost').Value;

Table1.Next;

end;

Table1.Active:=False;

Table1.ReadOnly:=True;;

Table1.Active:=true;

Table1.AutoCalcFields:=True;

AssignFile(f,'flag.txt');

Rewrite(f);

Writeln(f,month-1);

CloseFile(f);

flag:=1;

Button3.Enabled:=False;

end;

procedure TForm4.FormCreate(Sender: TObject);

var f:TextFile;

day,month,year:word;

tm:word;

begin

AssignFile(f,'flag.txt');

DecodeDate(Date,day,month,year);

Reset(f);

Readln(f,tm);

CloseFile(f);

if tm=month-1 then flag:=1;

if flag=1 then Button3.Enabled:=false;

end;

end.

Форма «Приходные накладные»

unit Unit5;

interface

uses

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

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

Buttons;

type

TForm5 = class(TForm)

TPrNakl: TTable;

SostPrNakl: TTable;

TTovary: TTable;

TPost: TTable;

DataSource1: TDataSource;

DataSource2: TDataSource;

DBGrid1: TDBGrid;

TPrNaklID: TAutoIncField;

TPrNaklID_Post: TSmallintField;

TPrNaklData_Post: TDateField;

TPrNaklN_Post: TStringField;

TPrNaklSum_Post: TCurrencyField;

TPrNaklUplata: TCurrencyField;

Label1: TLabel;

Label2: TLabel;

DBGrid2: TDBGrid;

SostPrNaklID_PS: TAutoIncField;

SostPrNaklID_Tov_P: TSmallintField;

SostPrNaklKol_P: TIntegerField;

SostPrNaklID_PN: TSmallintField;

SostPrNaklN_Tov: TStringField;

SostPrNaklNSumma: TCurrencyField;

DBNavigator1: TDBNavigator;

Label3: TLabel;

TPlata: TTable;

DBGrid3: TDBGrid;

DataSource3: TDataSource;

Button1: TButton;

Button2: TButton;

SostPrNaklN_Cena: TCurrencyField;

Query1: TQuery;

TTovaryID: TAutoIncField;

TTovaryArticul: TStringField;

TTovaryNazv_T: TStringField;

TTovaryCena: TCurrencyField;

TTovaryEd_Izm: TStringField;

TTovaryOst_NM: TIntegerField;

SostPrNaklHide: TCurrencyField;

TPlataID_PL: TAutoIncField;

TPlataID_PNakl: TSmallintField;

TPlataData_Pl: TDateField;

TPlataSum_PL: TCurrencyField;

BitBtn1: TBitBtn;

TPostCode_Post: TAutoIncField;

TPostNazv_Post: TStringField;

TPostFIO_Post: TStringField;

TPostTel_Post: TStringField;

TPostAdr_Post: TStringField;

TPostBank_Post: TSmallintField;

TPostS_Post: TStringField;

Button3: TButton;

TPrNaklOstatok: TCurrencyField;

procedure SostPrNaklCalcFields(DataSet: TDataSet);

procedure TPrNaklCalcFields(DataSet: TDataSet);

procedure DBGrid1Enter(Sender: TObject);

procedure DBGrid2Enter(Sender: TObject);

procedure DBGrid3Enter(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure TPrNaklBeforeDelete(DataSet: TDataSet);

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit9, Unit11;

var fl:Boolean;

{$R *.dfm}

procedure TForm5.SostPrNaklCalcFields(DataSet: TDataSet);

begin

SostPrNakl.FieldByName('N_Cena').AsCurrency:=SostPrNakl.FieldByName('Hide').AsCurrency;

SostPrNakl.FieldByName('NSumma').AsCurrency:=SostPrNakl.FieldByName('N_Cena').AsCurrency*SostPrNakl.FieldByName('Kol_P').AsInteger;

end;

procedure TForm5.TPrNaklCalcFields(DataSet: TDataSet);

begin

//Подсчет стимости накладной

Query1.SQL.Clear;

Query1.SQL.Add('SELECT PNaklad.ID, SUM(Tovary.Cena*SostP.Kol_P) as SumP');

Query1.SQL.Add('FROM Tovary, SostP, PNaklad');

Query1.SQL.Add('WHERE Tovary.ID=SostP.ID_Tov_P and PNaklad.ID=SostP.ID_PN GROUP BY PNaklad.ID');

Query1.Active := true;

Query1.Locate('ID',TPrNakl.FieldByName('ID').AsInteger,[]);

TPrNakl.FieldByName('Sum_Post').AsCurrency := Query1.FieldByName('SumP').AsCurrency;

Query1.SQL.Clear;

Query1.Close;

//Подсчет уплаченных $ по накладной

Query1.SQL.Add('SELECT ID, SUM(PPlata.Sum_PL) as SumUS');

Query1.SQL.Add('FROM PNaklad, PPlata');

Query1.SQL.Add('WHERE PNaklad.ID=PPlata.ID_PNakl GROUP BY PNaklad.ID');

Query1.Active := true;

Query1.Locate('ID',TPrNakl.FieldByName('ID').AsInteger,[]);

TPrNakl.FieldByName('Uplata').AsCurrency := Query1.FieldByName('SumUS').AsCurrency;

Query1.Close;

TPrNakl.FieldByName('OStatok').AsCurrency:=TPrNakl.FieldByName('Sum_Post').AsCurrency-TPrNakl.FieldByName('Uplata').AsCurrency;

end;

procedure TForm5.DBGrid1Enter(Sender: TObject);

begin

DBNavigator1.DataSource:=DataSource1;

end;

procedure TForm5.DBGrid2Enter(Sender: TObject);

begin

DBNavigator1.DataSource:=DataSource2;

end;

procedure TForm5.DBGrid3Enter(Sender: TObject);

begin

DBNavigator1.DataSource:=DataSource3;

end;

procedure TForm5.Button1Click(Sender: TObject);

begin

Form9:=TForm9.Create(Application);

Form9.ShowModal;

Form9.Free;

end;

procedure TForm5.Button2Click(Sender: TObject);

begin

Form11:=TForm11.Create(Application);

Form11.ShowModal;

Form11.Free;

end;

procedure TForm5.TPrNaklBeforeDelete(DataSet: TDataSet);

begin

if not fl then

if SostPrNakl.Locate('ID_PN',TPrNakl.FieldByName('ID').AsVariant,[]) then

begin

ShowMessage('Запись удалить нельзя');

Abort;

end

else

TPrNakl.Delete;

end;

procedure TForm5.Button3Click(Sender: TObject);

var CurrMonth, DBMonth:word;

year,day:word;

begin

fl:=true;

DecodeDate(Date,Year,CurrMonth,Day);

while not TPrNakl.Eof do

begin

DecodeDate(TPrNakl.FieldByName('Data_Post').AsDateTime,year,DBMonth,day);

if (CurrMonth>DBMonth) and (TPrNakl.FieldByName('Sum_Post').AsVariant=TPrNakl.FieldByName('Uplata').AsVariant) then begin

while not SostPrNakl.Eof do

if TPrNakl.FieldByName('ID').AsInteger=SostPrNakl.FieldByName('ID_PN').AsInteger then

SostPrNakl.Delete

else SostPrNakl.Next;

while not TPlata.Eof do

if TPrNakl.FieldByName('ID').AsInteger=Tplata.FieldByName('ID_PNakl').AsInteger then

TPlata.Delete

else TPlata.Next;

TPrNakl.Delete;

end else TPrNakl.Next;

end;

fl:=false;

end;

procedure TForm5.FormCreate(Sender: TObject);

begin

fl:=False;

end;

end.

Форма «Расходные накладные»

unit Unit6;

interface

uses

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

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

type

TForm6 = class(TForm)

TRNakl: TTable;

SostRNakl: TTable;

DataSource1: TDataSource;

DataSource2: TDataSource;

TTovary: TTable;

TPok: TTable;

Label1: TLabel;

DBGrid1: TDBGrid;

DBNavigator2: TDBNavigator;

DBGrid2: TDBGrid;

Label2: TLabel;

Button1: TButton;

TRNaklID: TAutoIncField;

TRNaklID_Pokup: TSmallintField;

TRNaklData_Rash: TDateField;

TRNaklPokupN: TStringField;

TRNaklSumR: TCurrencyField;

SostRNaklID_RS: TAutoIncField;

SostRNaklID_Tov_R: TSmallintField;

SostRNaklKol_R: TIntegerField;

SostRNaklID_RN: TSmallintField;

SostRNaklNR_Tov: TStringField;

SostRNaklR_Cena: TCurrencyField;

SostRNaklR_Stoim: TCurrencyField;

SostRNaklHide: TCurrencyField;

TTovaryID: TAutoIncField;

TTovaryArticul: TStringField;

TTovaryNazv_T: TStringField;

TTovaryCena: TCurrencyField;

TTovaryEd_Izm: TStringField;

TTovaryOst_NM: TIntegerField;

Query1: TQuery;

Button2: TButton;

TRNaklStatus: TDateField;

procedure DBGrid1Enter(Sender: TObject);

procedure DBGrid2Enter(Sender: TObject);

procedure SostRNaklCalcFields(DataSet: TDataSet);

procedure TRNaklCalcFields(DataSet: TDataSet);

procedure Button1Click(Sender: TObject);

procedure TRNaklBeforeDelete(DataSet: TDataSet);

procedure Button2Click(Sender: TObject);

procedure SostRNaklAfterPost(DataSet: TDataSet);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses Unit10,Unit9;

var fl:Boolean;

{$R *.dfm}

procedure TForm6.DBGrid1Enter(Sender: TObject);

begin

DBNavigator2.DataSource:=DataSource1;

end;

procedure TForm6.DBGrid2Enter(Sender: TObject);

begin

DBNavigator2.DataSource:=DataSource2;

end;

procedure TForm6.SostRNaklCalcFields(DataSet: TDataSet);

begin

SostRNakl.FieldByName('R_Cena').AsCurrency:=SostRNakl.FieldByName('Hide').AsCurrency;

SostRNakl.FieldByName('R_Stoim').AsCurrency:=SostRNakl.FieldByName('R_Cena').AsCurrency*SostRNakl.FieldByName('Kol_R').AsInteger;

end;

procedure TForm6.TRNaklCalcFields(DataSet: TDataSet);

begin

//Подсчет стимости накладной

Query1.SQL.Clear;

Query1.SQL.Add('SELECT RNaklad.ID, SUM(Tovary.Cena*SostR.Kol_R) as SumR');

Query1.SQL.Add('FROM Tovary, SostR, RNaklad');

Query1.SQL.Add('WHERE Tovary.ID=SostR.ID_Tov_R and RNaklad.ID=SostR.ID_RN GROUP BY RNaklad.ID');

Query1.Active := true;

Query1.Locate('ID',TRNakl.FieldByName('ID').AsInteger,[]);

TRNakl.FieldByName('SumR').AsVariant := Query1.FieldByName('SumR').AsVariant;

Query1.SQL.Clear;

Query1.Close;

end;

procedure TForm6.Button1Click(Sender: TObject);

begin

Form10:=TForm10.Create(Application);

Form10.ShowModal;

Form10.Free;

end;

procedure TForm6.TRNaklBeforeDelete(DataSet: TDataSet);

begin

if not fl then

if (SostRNakl.Locate('ID_RN',TRNakl.FieldByName('ID').AsVariant,[])) then

begin

ShowMessage('Запись удалить нельзя');

Abort;

end else

TRNakl.Delete;

end;

procedure TForm6.Button2Click(Sender: TObject);

var CurrMonth, DBMonth:word;

year,day:word;

begin

fl:=true;

DecodeDate(Date,Year,CurrMonth,Day);

while not TRNakl.Eof do

begin

DecodeDate(TRNakl.FieldByName('Data_Rash').AsDateTime,year,DBMonth,day);

if CurrMonth>DBMonth then begin

while not SostRNakl.Eof do

if (TRNakl.FieldByName('ID').AsInteger=SostRNakl.FieldByName('ID_RN').AsInteger) and (TRNakl.FieldByName('Status').AsString<>'') then

SostRNakl.Delete

else SostRNakl.Next;

TRNakl.Delete;

end else TRNakl.Next;

end;

fl:=false;

end;

procedure TForm6.SostRNaklAfterPost(DataSet: TDataSet);

var n_tov:string;

id:String;

coun:integer;

begin

id:=TRNakl.FieldByName('ID').AsString;

n_tov:=SostRNakl.FieldByName('NR_Tov').AsString;

Query1.SQL.Clear;

Query1.SQL.Add('SELECT SostR.ID_Tov_R as IDR');

Query1.SQL.Add('FROM SostR, Tovary');

Query1.SQL.Add('WHERE Tovary.Nazv_T="'+n_tov+'" AND SostR.ID_RN="'+id+'" AND SostR.ID_Tov_R=Tovary.ID');

Query1.Active:=true;

coun:=Query1.RecordCount;

Query1.Close;

if coun>1 then

begin

ShowMessage('Уже имеется в накладной');

SostRNakl.Delete;

end;

end;

procedure TForm6.FormCreate(Sender: TObject);

begin

fl:=false;

end;

end.

Форма со сведениями о банках.

unit Unit7;

interface

uses

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

Dialogs, StdCtrls, Mask, DBCtrls, DB, ExtCtrls, DBTables;

type

TForm7 = class(TForm)

TBank: TTable;

DBNavigator1: TDBNavigator;

DataSource1: TDataSource;

Label1: TLabel;

DBEdit1: TDBEdit;

Label2: TLabel;

DBEdit2: TDBEdit;

Table1: TTable;

Table2: TTable;

Table1Code_Post: TAutoIncField;

Table1Nazv_Post: TStringField;

Table1FIO_Post: TStringField;

Table1Tel_Post: TStringField;

Table1Adr_Post: TStringField;

Table1Bank_Post: TSmallintField;

Table1S_Post: TStringField;

Table2Code_Pokup: TAutoIncField;

Table2Name_Pokup: TStringField;

Table2FIO_Pokup: TStringField;

Table2Tel_Pokup: TStringField;

Table2Adr_Pokup: TStringField;

Table2Bank_Pokup: TSmallintField;

Table2S_Pokup: TStringField;

TBankID_B: TAutoIncField;

TBankName_B: TStringField;

TBankAdr_B: TStringField;

Edit1: TEdit;

Button1: TButton;

procedure TBankBeforeDelete(DataSet: TDataSet);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.TBankBeforeDelete(DataSet: TDataSet);

var code_b:integer;

pb,rb:boolean;

begin

code_b:=TBank.FieldByName('ID_B').AsInteger;

pb:=Table1.Locate('Bank_Post',code_b,[]);

rb:=Table2.Locate('Bank_Pokup',code_b,[]);

if pb or rb then begin

ShowMessage('Запись удалить невозможно');

Abort;

end

else TBank.Delete;

end;

procedure TForm7.Button1Click(Sender: TObject);

begin

TBank.Locate('Name_B',Edit1.Text,[loPartialKey,loCaseInsensitive]);

end;

end.

Добавление наименования на склад.

unit Unit8;

interface

uses

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

Dialogs, Buttons, StdCtrls;

type

TForm8 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Label4: TLabel;

ComboBox1: TComboBox;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

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

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

uses unit4;

{$R *.dfm}

procedure TForm8.Button1Click(Sender: TObject);

var art,tname,val:string;

cost:Currency;

begin

Form4.Table1.Active:=False;

Form4.Table1.ReadOnly:=False;

Form4.Table1.Active:=True;

art:=Edit1.Text;

tname:=Edit2.Text;

try

cost:=StrToFloat(Edit3.Text);

except

beep;

ShowMessage('Проверьте правильность ввода цены');

Exit;

end;

val:=ComboBox1.Text;

Form4.Table1.Insert;

Form4.Table1.FieldByName('Ost_NM').AsInteger:=0;

Form4.Table1.FieldByName('Articul').AsString:=art;

Form4.Table1.FieldByName('Nazv_T').AsString:=tname;

Form4.Table1.FieldByName('Cena').AsVariant:=cost;

Form4.Table1.FieldByName('Ed_Izm').AsString:=val;

Form4.Table1.Post;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

Edit1.SetFocus;

ComboBox1.ItemIndex:=-1;

end;

procedure TForm8.BitBtn1Click(Sender: TObject);

begin

Form4.Table1.Active:=False;

form4.Table1.ReadOnly:=true;

Form4.Table1.Active:=True;

end;

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

begin

Form4.Table1.Active:=False;

form4.Table1.ReadOnly:=true;

Form4.Table1.Active:=True;

end;

end.

Отчет по приходным накладным.

unit Unit9;

interface

uses

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

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

type

TForm9 = class(TForm)

QuickRep1: TQuickRep;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

SummaryBand1: TQRBand;

TitleBand1: TQRBand;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRLabel6: TQRLabel;

Query1: TQuery;

QRLabel7: TQRLabel;

Query1Nazv: TStringField;

Query1Cena: TCurrencyField;

Query1Kol: TIntegerField;

Query1SumIzd: TCurrencyField;

QRDBText2: TQRDBText;

QRDBText1: TQRDBText;

Query1Art: TStringField;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRDBText5: TQRDBText;

QRDBText6: TQRDBText;

QRExpr1: TQRExpr;

procedure FormCreate(Sender: TObject);

procedure QuickRep1AfterPreview(Sender: TObject);

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form9: TForm9;

implementation

uses unit5;

{$R *.dfm}

procedure TForm9.FormCreate(Sender: TObject);

var nz:string;

begin

nz:=Form5.SostPrNakl.FieldByName('ID_PN').AsString;

Query1.SQL.Clear;

Query1.SQL.Add('SELECT Tovary.Nazv_T as Nazv, Tovary.Cena as Cena, SostP.Kol_P as Kol, Tovary.Cena*SostP.Kol_P as SumIzd, Tovary.Articul as Art');

Query1.SQL.Add('FROM Tovary, SostP');

Query1.SQL.Add('WHERE Tovary.ID=SostP.ID_Tov_P AND SostP.ID_PN="'+nz+'"');

Query1.Active:=true;

end;

procedure TForm9.QuickRep1AfterPreview(Sender: TObject);

begin

Form9.Close;

end;

procedure TForm9.FormActivate(Sender: TObject);

begin

QuickRep1.Preview;

end;

end.

Отчет по платежам.

unit Unit10;

interface

uses

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

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

type

TForm10 = class(TForm)

QuickRep1: TQuickRep;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

SummaryBand1: TQRBand;

TitleBand1: TQRBand;

Query1: TQuery;

Query1Nazv: TStringField;

Query1Cena: TCurrencyField;

Query1Kol: TIntegerField;

Query1SumIzd: TCurrencyField;

Query1Art: TStringField;

QRLabel1: TQRLabel;

QRDBText6: TQRDBText;

QRLabel5: TQRLabel;

QRLabel7: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRDBText5: TQRDBText;

QRLabel6: TQRLabel;

QRExpr1: TQRExpr;

procedure FormActivate(Sender: TObject);

procedure QuickRep1AfterPreview(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form10: TForm10;

implementation

uses unit6;

{$R *.dfm}

procedure TForm10.FormActivate(Sender: TObject);

begin

QuickRep1.Preview;

end;

procedure TForm10.QuickRep1AfterPreview(Sender: TObject);

begin

Form10.Close;

end;

procedure TForm10.FormCreate(Sender: TObject);

var nz:string;

begin

nz:=Form6.SostRNakl.FieldByName('ID_RN').AsString;

Query1.SQL.Clear;

Query1.SQL.Add('SELECT Tovary.Nazv_T as Nazv, Tovary.Cena as Cena, SostR.Kol_R as Kol, Tovary.Cena*SostR.Kol_R as SumIzd, Tovary.Articul as Art');

Query1.SQL.Add('FROM Tovary, SostR');

Query1.SQL.Add('WHERE Tovary.ID=SostR.ID_Tov_R AND SostR.ID_RN="'+nz+'"');

Query1.Active:=true;

end;

end.

Печать расходной накладной.

unit Unit11;

interface

uses

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

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

type

TForm11 = class(TForm)

QuickRep1: TQuickRep;

ColumnHeaderBand1: TQRBand;

DetailBand1: TQRBand;

SummaryBand1: TQRBand;

TitleBand1: TQRBand;

Query1: TQuery;

QRLabel1: TQRLabel;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel6: TQRLabel;

QRLabel7: TQRLabel;

Query1Cod: TIntegerField;

Query1Data_Post: TDateField;

Query1FPost: TStringField;

Query1Data_Opl: TDateField;

Query1Sum_Opl: TCurrencyField;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRDBText5: TQRDBText;

QRDBText6: TQRDBText;

procedure FormCreate(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure QuickRep1AfterPreview(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form11: TForm11;

implementation

uses unit5;

{$R *.dfm}

procedure TForm11.FormCreate(Sender: TObject);

begin

Query1.SQL.Clear;

Query1.SQL.Add('SELECT distinct PPlata.ID_PL as idp, PNaklad.ID as Cod, PNaklad.Data_Post as Data_Post, FPost.Nazv_Post as Postav, PPlata.Data_Pl as Data_Opl, PPlata.Sum_PL as Sum_Opl');

Query1.SQL.Add('FROM Tovary, SostP, FPost, PPlata, PNaklad');

Query1.SQL.Add('WHERE PNaklad.ID_Post=FPost.Code_Post AND PNaklad.ID=PPlata.ID_PNakl AND PNaklad.ID=SostP.ID_PN AND Tovary.ID=Sostp.ID_Tov_P');

Query1.Active:=True;

end;

procedure TForm11.FormActivate(Sender: TObject);

begin

QuickRep1.Preview;

end;

procedure TForm11.QuickRep1AfterPreview(Sender: TObject);

begin

Form11.Close;

end;

end.