
Разработка приложения. Интерфейс программы.
Главная форма программы позволяет перемещаться в любой из разделов базы данных:
Информация о фирмах поставщиках
Информация о фирмах покупателях
Просмотр склада оптовой фирмы
Просмотр приходных накладных
Просмотр приходных накладных
Просмотр сведений о банках
Рис. 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.