Склад строительных материалов

Министерство  образования и науки Украины

Криворожский технический  университет

Кафедра моделирования  и программного обеспечения

 

 

 

 

Курсовая работа

 

по дисциплине:

               

«Организация  баз данных и знаний»

 

на  тему:

“Склад строительных материалов ”

 

 

Выполнил:

cт. гр. ПЗАС-04-2

Кунё С. В.

Принял:

доц., к.т.н. Смолянский П.С.

Кривой Рог

2006

 

Содержание

 

  1. Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  2. Технический проект . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  3. Программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
  4. Руководство пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
  5. Руководство программиста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  61
  6. Список использованой литератури . . . . . . . . . . . . . . . . . . . . . . . . . . . .   63

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Постановка  задачи

В настоящее время довольно быстро и хорошо развивается строительная промышленность, производится постройка, восстановление жилищных домов, предприятий, офисов, фабрик. К сожалению, наша страна еще не достигла того уровня, чтоб самостоятельно разрабатывать все материалы в нужном количестве и по наивысшему качеству. Чтобы достичь долговечности построек, а также для достижения наилучшего результата, в этой промышленности используются товары различных фирм-производителей, стран, а также в различной конфигурации. Товар, как известно, хранится на складе, куда его периодически завозят фирмы-производители. В таком случае очень трудно учесть все поставки или продажи товара, также сложно следить за большим количеством договоров с клиентами или поставщиками. Для четкой и эффективной работы необходимо использовать передовые технологии в организации склада. Один из таких способов – использование системы управления базами данных склада. Основная задача, связанная со складом это поиск того товара, который соответствовал запросам клиентов. С помощью такой системы можно быстро найти предложение соответствующему клиенту. Применив новые способы организации данных можно значительно повысить эффективность работы склада.

При создании СУБД нужно  четко знать:

- Задачи склада?

Склад занимается поставками товара различных фирм в торговые точки или фирменные магазины.

- Откуда берется товар?

Весь товар хранится на складе, куда его периодически завозят  фирмы-производители.

- Кто покупает и  реализует товар, полученный со  склада?

Существуют клиенты – магазины или люди, которые реализуют товар за определенную цену (её клиент устанавливает в зависимости от дефицита товара или спроса на товар).

- Кто на складе занимается  договорами?

Для каждой торговой точки (магазина) существует торговый агент. Торговые агенты посещают магазины (торговые точки), с которыми заключены договоры купли-продажи. В каждой торговой точке торговый агент берет заказ на поставку данной продукции, сверяя суммы оплаты за предыдущую поставку с владельцем торговой точки.

Возникает вопрос – для чего нужно создавать необходимую СУБД?

Здесь же и ответим  на этот вопрос. Необходимую СУБД нужно  создавать для повышения качества предоставляемых услуг. Так, как  объем данных, с которыми работает склад очень большой, возникают  проблемы с предоставлением услуг для персонала.

Цель работы:

Система должна обеспечивать:

1) ведение базы данных  товаров, групп товаров и производителей;

2) определение наличия  товара на складе;

3) регистрация клиентов (поставщиков);

4) регистрация клиентов (покупателей), улица, дом магазина;

5) просмотр и оформление  договоров;

6) просмотр и оформление  заказов;

7) регистрация торговых  агентов;

8) за каждым предпринимателем  должен быть закреплен агент;

9) должен быть отчет  о существующих клиентах (должниках), которые не оплатили товар;

10) нужно учесть учет  перемещения товара;

Система должна иметь  удобный интерфейс, предоставляющий  наиболее гибкий способ просмотра, добавления, редактирования и удаления данных, а также отбор и поиск необходимых  данных.

Данная схема показывает, что склад это некий посредник между клиентами.

Преимущество использования  склада состоит в том что:

- Вся информация о  складе уже осмотрена, то есть существует отчет по товару, который хранится на складе, в отчете содержится информация о наименовании, к какому разделу он относится, фирма-производитель, закупочная цена, код товара и наличие.

Отчет по клиентам – информация о предпринимателе и магазине, фамилия имя отчество торгового  агента, за которым закреплен клиент.

Отчет по заказам –  заказчик, товар, количество, доставлен товар или нет, строки доставки, произведена ли оплата и в какой форме (наличная, безналичная).

- Если у клиента нет возможности установить прямой контакт с другим лицом, то клиент может связатся со своим агентом и узнать все детали.

Клиенты (поставщики). Поставщиком может быть любая организация или страна.

Клиенты (покупатели). Клиентом покупателем может быть любое физическое лицо или предприниматель. Клиенты связываются со складом и оставляют минимально необходимую информации о себе. Сотрудник склада находит подходящий товар и через торгового агента связывается с клиентом. Если обе стороны согласны составляется договор (заказ нужного товара).

 

 

2. Технический  проект

Назначение, используемых таблиц

Название таблицы

Назначение

GeneralSklad

Хранение информации о товаре, находящемся на складе

Clients

Хранение данных о  клиентах фирмы

Contract

Хранение информации обо всех заказах

Section

Справочник разделов, на которые делится товар

Manufacture

Справочник производителей товара

Streets

Справочник улиц

Agents

Справочник торговых агентов


 

Структура таблицы GeneralSklad

№ п/п

Название

Тип

Длина

Назначение

1

IDGoods

Автоинкремент

 

Ключевое поле

2

NameGoods

Строка

50

Наименование товара

3

Section

Длинное целое

 

Раздел, к которому относится товар

4

Manufacture

Длинное целое

 

Производитель товара

5

PriceOne

Вещественное

 

Закупочная цена

6

PriceTwo

Вещественное

 

Цена реализации

7

CountGoods

Длинное целое

 

Количество данного  товара на складе

8

CodeGoods

Строка

7

Внутренний код товара


 

 

Структура таблицы Clients

№ п/п

Название

Тип

Длина

Назначение

1

IDClient

Автоинкремент

 

Ключевое поле

2

Enterprise

Строка

20

Название предпринимателя

3

Shop

Строка

15

Название магазина

4

Street

Длинное целое

 

Адрес: улица

5

House

Целое

 

Адрес: квартира

6

Agent

Длинное целое

 

Агент, который закреплен  за данной торговой точкой


 

Структура таблицы Contract

№ п/п

Название

Тип

Длина

Назначение

1

IDContract

Автоинкремент

 

Ключевое поле

2

Client

Длинное целое

 

Торговая точка, которая  заказывает товар

3

Goods

Длинное целое

 

Заказываемый товар

4

CountGoods

Целое

 

Количество заказываемого  товара

5

Pay

Логическое

 

Оплачен ли товар

6

Delivery

Логическое

 

Доставлен ли товар


 

 

 

 

 

 

Структура таблицы Section

№ п/п

Название

Тип

Длина

Назначение

1

IDSection

Автоинкремент

 

Ключевое поле

2

NameSection

Строка

20

Название раздела товара


 

Структура таблицы Manufacture

№ п/п

Название

Тип

Длина

Назначение

1

IDManufacture

Автоинкремент

 

Ключевое поле

2

NameManufac-ture

Строка

20

Фирма-производитель


 

Структура таблицы Street

№ п/п

Название

Тип

Длина

Назначение

1

IDStreet

Автоинкремент

 

Ключевое поле

2

NameStreet

Строка

25

Название улицы


 

Структура таблицы Agents

№ п/п

Название

Тип

Длина

Назначение

1

IDAgent

Автоинкремент

 

Ключевое поле

2

NameAgent

Строка

40

Ф.И.О. агента


 

 

 

 

 

Структура связей всех таблиц

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Программирование

Переменные  и процедуры модуля

unit UnitMainMenu;

interface

uses

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

  Dialogs, StdCtrls, Buttons, Menus, DB, DBTables,

  UnitSklad, UnitAddGoods, UnitEditGoods, UnitPrintSklad, jpeg, ExtCtrls, XPMan;

type

  TFormMainMenu = class(TForm)

    MainMenu1: TMainMenu;

    BitBtn1: TBitBtn;

    N1: TMenuItem;

    N2: TMenuItem;

    N7: TMenuItem;

    N8: TMenuItem;

    N9: TMenuItem;

    N10: TMenuItem;

    N11: TMenuItem;

    N12: TMenuItem;

    N13: TMenuItem;

    N14: TMenuItem;

    N15: TMenuItem;

    N16: TMenuItem;

    N17: TMenuItem;

    BitBtn2: TBitBtn;

    Image1: TImage;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    BitBtn3: TBitBtn;

    BitBtn4: TBitBtn;

    BitBtn5: TBitBtn;

    XPManifest1: TXPManifest;

    procedure BitBtn1Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure N8Click(Sender: TObject);

    procedure N11Click(Sender: TObject);

    procedure N12Click(Sender: TObject);

    procedure N13Click(Sender: TObject);

    procedure N14Click(Sender: TObject);

    procedure N15Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure N17Click(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure BitBtn4Click(Sender: TObject);

    procedure BitBtn5Click(Sender: TObject);

  private

    procedure WMClose(var a:TWMClose); message WM_CLOSE;

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormMainMenu: TFormMainMenu;

 

implementation

 

uses UnitContract, UnitEditContract, UnitClients, UnitEditAgent,

  UnitEditManufacture, UnitEditSection, UnitEditStreet, UnitDolgClient,

  UnitAddContract, UnitHelp1, UnitHelp2;

{$R *.dfm}

procedure TFormMainMenu.BitBtn1Click(Sender: TObject);

begin

FormSklad.ShowModal;

end;

 

procedure TFormMainMenu.N4Click(Sender: TObject);

begin

FormHelp1.ShowModal;

end;

 

procedure TFormMainMenu.N5Click(Sender: TObject);

begin

FormHelp2.ShowModal;

end;

 

procedure TFormMainMenu.N2Click(Sender: TObject);

begin

FormMainMenu.Close;

end;

 

procedure TFormMainMenu.N9Click(Sender: TObject);

begin

FormContract.ShowModal;

end;

 

procedure TFormMainMenu.N8Click(Sender: TObject);

begin

FormAddContract.ShowModal;

end;

 

procedure TFormMainMenu.N11Click(Sender: TObject);

begin

FormClients.ShowModal;

end;

 

procedure TFormMainMenu.N12Click(Sender: TObject);

begin

FormEditAgent.ShowModal;

end;

 

procedure TFormMainMenu.N13Click(Sender: TObject);

begin

FormEditManufacture.ShowModal;

end;

 

procedure TFormMainMenu.N14Click(Sender: TObject);

begin

  FormEditSection.ShowModal;

end;

 

procedure TFormMainMenu.N15Click(Sender: TObject);

begin

FormEditStreet.ShowModal;

end;

 

procedure TFormMainMenu.BitBtn2Click(Sender: TObject);

begin

FormMainMenu.Close;

end;

 

procedure TFormMainMenu.N17Click(Sender: TObject);

begin

FormDolgClient.ShowModal;

end;

 

procedure TFormMainMenu.BitBtn3Click(Sender: TObject);

begin

FormContract.ShowModal;

end;

 

procedure TFormMainMenu.BitBtn4Click(Sender: TObject);

begin

FormClients.ShowModal;

end;

 

procedure TFormMainMenu.BitBtn5Click(Sender: TObject);

begin

FormEditAgent.ShowModal;

end;

 

procedure TFormMainMenu.WMClose(var a:TWMClose);

begin

  FormMainMenu.Caption:='Караул! Меня закрывают!';

  if messageDlgPos('Меня хотят закрыть. Хозяин, вы уверенны в своих действиях???',mtConfirmation,[mbYes,mbOk],0,

                    BoundsRect.Left,BoundsRect.Bottom) = mrYes

  then Close

else FormMainMenu.Caption:='Я  знала, что вы добрый человек!';

  a.Result:=0;

  end;

end.

Переменные  и процедуры модуля

unit UnitSklad;

 

interface

 

uses

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

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

  DBCtrls, RpRave, RpDefine, RpCon, RpConDS, RpConBDE, WordXP, OleServer;

 

type

  TFormSklad = class(TForm)

    DBGridGeneralSklad: TDBGrid;

    DataSourceGeneralSklad: TDataSource;

    QueryGeneralSklad: TQuery;

    DataSourceSection: TDataSource;

    QuerySection: TQuery;

    DataSourceManufacture: TDataSource;

    QueryManufacture: TQuery;

    BitBtn1: TBitBtn;

    DBNavigator1: TDBNavigator;

    Label1: TLabel;

    RadioGroup1: TRadioGroup;

    DataSourceContract: TDataSource;

    DataSourceClients: TDataSource;

    DataSourceStreets: TDataSource;

    DataSourceAgents: TDataSource;

    QueryContract: TQuery;

    QueryClients: TQuery;

    QueryStreets: TQuery;

    QueryAgents: TQuery;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    BitBtn4: TBitBtn;

    BitBtn5: TBitBtn;

    procedure ShowGeneralSklad;{(Sender: TObject);}

    procedure FormActivate(Sender: TObject);

    procedure RadioGroup1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure BitBtn4Click(Sender: TObject);

    procedure BitBtn5Click(Sender: TObject);

    procedure DBGridGeneralSkladCellClick(Column: TColumn);

    procedure DBGridGeneralSkladKeyUp(Sender: TObject; var Key: Word;

      Shift: TShiftState);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormSklad: TFormSklad;

  nowID:integer;{Хранит номер текущей записи}

  Sort:string;  {Строка для запроса, отвечающая за поле, по кооторому необходимо

                сортировать данные}

 

implementation

 

uses UnitAddGoods, UnitEditGoods, UnitPrintSklad;

 

{$R *.dfm}

{Процедура отображения таблицы GeneralSklad}

procedure TFormSklad.ShowGeneralSklad;{(Sender: TObject);}

begin

QueryGeneralSklad.Close;

  QueryGeneralSklad.SQL.Clear;

  QueryGeneralSklad.SQL.Add('SELECT a.IDGoods,a.CodeGoods Артикул, a.NameGoods Наименование,');

  QueryGeneralSklad.SQL.Add(' d.NameSection Раздел, e.NameManufacture Производитель,');

  QueryGeneralSklad.SQL.Add(' a.PriceOne Цена_Зак_грн, a.PriceTwo Цена_Реализ_грн, a.CountGoods Кол_во');

  QueryGeneralSklad.SQL.Add(' from generalsklad as a, section as d, manufacture as e');

  QueryGeneralSklad.SQL.Add(' where a.Section=d.IDSection and a.Manufacture=e.IDManufacture'+Sort);

  QueryGeneralSklad.Open;

  DBGridGeneralSklad.Fields[0].Visible:=false;

  if not QueryGeneralSklad.IsEmpty then

    nowID:=QueryGeneralSklad.FieldValues['IDGoods'];

    end;

 

procedure TFormSklad.FormActivate(Sender: TObject);

begin

  Sort:=' ORDER BY a.NameGoods'; {Включение сортировки по полю <<Наименование товара>>}

  ShowGeneralSklad;

end;

 

procedure TFormSklad.RadioGroup1Click(Sender: TObject);

begin

  {Включение необходимой  сортировки с помощью изминения  запроса чтения данных}

  if RadioGroup1.ItemIndex=0 then Sort:=' ORDER BY a.NameGoods';

  if RadioGroup1.ItemIndex=1 then Sort:=' ORDER BY d.NameSection';

  if RadioGroup1.ItemIndex=2 then Sort:=' ORDER BY e.NameManufacture';

  if RadioGroup1.ItemIndex=3 then Sort:=' ORDER BY a.CountGoods';

  ShowGeneralSklad;

end;

 

procedure TFormSklad.BitBtn2Click(Sender: TObject);

begin

FormAddGoods.ShowModal;

end;

 

procedure TFormSklad.BitBtn3Click(Sender: TObject);

begin

FormEditGoods.ShowModal;

end;

 

procedure TFormSklad.BitBtn4Click(Sender: TObject);

var kol:integer;

begin

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('SELECT CountGoods FROM GeneralSklad WHERE IDGoods='''+IntToStr(nowID)+'''');

  FormSklad.QueryGeneralSklad.Open;

  kol:=FormSklad.DBGridGeneralSklad.Fields[0].Value;

  FormSklad.ShowGeneralSklad;

  if kol<>0 then {Проверка наличия товара на складе}

    begin

      MessageDlg('Нельзя  удалить товар если он имеется  на складе!',mtWarning,[mbOK],0);

      exit;

    end;

  if MessageDlg('Вы уверены,  что хотите удалить текущее  наименование товара?',mtWarning,[mbOK,mbCancel],0)=mrCancel then exit;

  {Удаление текущего  наименования товра}

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('DELETE FROM GeneralSklad WHERE IDGoods='''+IntToStr(nowID)+'''');

  FormSklad.QueryGeneralSklad.ExecSQL;

  FormSklad.ShowGeneralSklad;

end;

 

procedure TFormSklad.BitBtn5Click(Sender: TObject);

begin

FormPrintSklad.ShowModal;

end;

 

procedure TFormSklad.DBGridGeneralSkladCellClick(Column: TColumn);

begin

nowID:=QueryGeneralSklad.FieldValues['IDGoods']; {Сохраняем номер текущей записи при перемещении по таблице}

end;

 

procedure TFormSklad.DBGridGeneralSkladKeyUp(Sender: TObject;

  var Key: Word; Shift: TShiftState);

begin

nowID:=QueryGeneralSklad.FieldValues['IDGoods']; {Сохраняем номер текущей записи при перемещении по таблице}

end;

end.

 

Переменные и процедуры  модуля

unit UnitAddGoods;

 

interface

 

uses

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

  Dialogs, StdCtrls, Buttons, UnitSklad;

 

type

  TFormAddGoods = class(TForm)

    Label1: TLabel;

    Edit1: TEdit;

    Label2: TLabel;

    Edit2: TEdit;

    Label3: TLabel;

    ComboBox1: TComboBox;

    Label4: TLabel;

    ComboBox2: TComboBox;

    Label5: TLabel;

    Edit3: TEdit;

    Label6: TLabel;

    Edit4: TEdit;

    Label7: TLabel;

    Edit5: TEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    procedure ShowSection;

    procedure ShowManufacture;

    procedure FormActivate(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormAddGoods: TFormAddGoods;

 

implementation

 

{$R *.dfm}

{ПРоцедура отображения  таблицы <<Section>>}

procedure TFormAddGoods.ShowSection;

begin

  FormSklad.QuerySection.Close;

  FormSklad.QuerySection.SQL.Clear;

  FormSklad.QuerySection.SQL.Add('SELECT NameSection FROM Section ORDER BY NameSection');

  FormSklad.QuerySection.Open;

  ComboBox1.Clear;

  FormSklad.QuerySection.First;

  while not FormSklad.QuerySection.Eof do

    begin

      ComboBox1.Items.Add(FormSklad.QuerySection.FieldValues['NameSection']);

      FormSklad.QuerySection.Next;

    end;

  ComboBox1.ItemIndex:=0;

end;

 

{ПРоцедура отображения  таблицы <<Manufacture>>}

procedure TFormAddGoods.ShowManufacture;

begin

  FormSklad.QueryManufacture.Close;

  FormSklad.QueryManufacture.SQL.Clear;

  FormSklad.QueryManufacture.SQL.Add('SELECT NameManufacture FROM Manufacture ORDER BY NameManufacture');

  FormSklad.QueryManufacture.Open;

  ComboBox2.Clear;

  FormSklad.QueryManufacture.First;

  while not FormSklad.QueryManufacture.Eof do

    begin

      ComboBox2.Items.Add(FormSklad.QueryManufacture.FieldValues['NameManufacture']);

      FormSklad.QueryManufacture.Next;

    end;

  ComboBox2.ItemIndex:=0;

end;

 

procedure TFormAddGoods.FormActivate(Sender: TObject);

begin

  ShowSection;

  ShowManufacture;

end;

 

procedure TFormAddGoods.BitBtn1Click(Sender: TObject);

var sec,manuf:string;

begin

if (Edit1.Text='')or(Edit2.Text='')or(Edit3.Text='')or(Edit4.Text='')or(Edit5.Text='') then

    begin

      MessageDlg('не все данные введены!',mtWarning,[mbOK],0);

      exit;

  end;

  {Определение кода раздела по неименованию}

  FormSklad.QuerySection.Close;

  FormSklad.QuerySection.SQL.Clear;

  FormSklad.QuerySection.SQL.Add('SELECT IDSection FROM Section WHERE NameSection='''+ComboBox1.Text+'''');

  FormSklad.QuerySection.Open;

  sec:=FormSklad.QuerySection.FieldValues['IDSection'];

  {Определение кода произволителя по названию}

  FormSklad.QueryManufacture.Close;

  FormSklad.QueryManufacture.SQL.Clear;

  FormSklad.QueryManufacture.SQL.Add('SELECT IDManufacture FROM Manufacture WHERE NameManufacture='''+ComboBox2.Text+'''');

  FormSklad.QueryManufacture.Open;

  manuf:=FormSklad.QueryManufacture.FieldValues['IDManufacture'];

  {Добавление нового наименования товара}

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('INSERT INTO GeneralSklad (NameGoods, Section, Manufacture, PriceOne, PriceTwo, CountGoods, CodeGoods) VALUES ('''+Edit2.Text+''','''+sec+''','''+manuf+''','''+Edit3.Text+''','''+Edit4.Text+''','''+Edit5.Text+''','''+Edit1.Text+''')');

  FormSklad.QueryGeneralSklad.ExecSQL;

  Close;

  FormSklad.ShowGeneralSklad;

end;

 

procedure TFormAddGoods.BitBtn2Click(Sender: TObject);

begin

FormAddGoods.Close;

end;

end.

 

Переменные  и процедуры модуля

unit UnitEditGoods;

 

interface

 

uses

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

  Dialogs, StdCtrls, Buttons, UnitSklad;

type

  TFormEditGoods = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    ComboBox1: TComboBox;

    ComboBox2: TComboBox;

    Edit3: TEdit;

    Edit4: TEdit;

    Edit5: TEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    procedure ShowSection;

    procedure ShowManufacture;

    procedure FormActivate(Sender: TObject);

    procedure ShowGeneralSklad;

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormEditGoods: TFormEditGoods;

 

implementation

 

{$R *.dfm}

{Процедура отображения  таблицы <<Section>>}

procedure TFormEditGoods.ShowSection;

begin

  FormSklad.QuerySection.Close;

  FormSklad.QuerySection.SQL.Clear;

  FormSklad.QuerySection.SQL.Add('SELECT NameSection FROM Section ORDER BY NameSection');

  FormSklad.QuerySection.Open;

  ComboBox1.Clear;

  FormSklad.QuerySection.First;

  while not FormSklad.QuerySection.Eof do

    begin

      ComboBox1.Items.Add(FormSklad.QuerySection.FieldValues['NameSection']);

      FormSklad.QuerySection.Next;

    end;

end;

 

{Процедура отображения производителей}

procedure TFormEditGoods.ShowManufacture;

begin

  FormSklad.QueryManufacture.Close;

  FormSklad.QueryManufacture.SQL.Clear;

  FormSklad.QueryManufacture.SQL.Add('SELECT NameManufacture FROM Manufacture ORDER BY NameManufacture');

  FormSklad.QueryManufacture.Open;

  ComboBox2.Clear;

  FormSklad.QueryManufacture.First;

  while not FormSklad.QueryManufacture.Eof do

    begin

      ComboBox2.Items.Add(FormSklad.QueryManufacture.FieldValues['NameManufacture']);

      FormSklad.QueryManufacture.Next;

    end;

end;

 

{Процедура отображения  информации о текущем товаре}

procedure TFormEditGoods.ShowGeneralSklad;

begin

  Edit2.Text:=FormSklad.QueryGeneralSklad.FieldValues['Наименование'];

  ShowSection;

  ShowManufacture;

  ComboBox1.Text:=FormSklad.QueryGeneralSklad.FieldValues['Раздел'];

  ComboBox2.Text:=FormSklad.QueryGeneralSklad.FieldValues['Производитель'];

  Edit3.Text:=FormSklad.QueryGeneralSklad.FieldValues['Цена_Зак_грн'];

  Edit4.Text:=FormSklad.QueryGeneralSklad.FieldValues['Цена_Реализ_грн'];

  Edit5.Text:=FormSklad.QueryGeneralSklad.FieldValues['Кол_во'];

  Edit1.Text:=FormSklad.QueryGeneralSklad.FieldValues['Артикул'];

end;

 

procedure TFormEditGoods.BitBtn1Click(Sender: TObject);

var sec,manuf:string;

begin

  if (Edit1.Text='')or(Edit2.Text='')or(Edit3.Text='')or(Edit4.Text='')or(Edit5.Text='') then

    begin

      MessageDlg('не все данные введены!',mtWarning,[mbOK],0);

      exit;

end;

 

FormSklad.QuerySection.Close;

  FormSklad.QuerySection.SQL.Clear;

  FormSklad.QuerySection.SQL.Add('SELECT IDSection FROM Section WHERE NameSection='''+ComboBox1.Text+'''');

  FormSklad.QuerySection.Open;

  sec:=FormSklad.QuerySection.FieldValues['IDSection'];

 

  FormSklad.QueryManufacture.Close;

  FormSklad.QueryManufacture.SQL.Clear;

  FormSklad.QueryManufacture.SQL.Add('SELECT IDManufacture FROM Manufacture WHERE NameManufacture='''+ComboBox2.Text+'''');

  FormSklad.QueryManufacture.Open;

  manuf:=FormSklad.QueryManufacture.FieldValues['IDManufacture'];

 

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('UPDATE GeneralSklad SET NAmeGoods='''+Edit2.Text+''', Section='''+sec+''', Manufacture='''+manuf+''', PriceOne='''+Edit3.Text+''', PriceTwo='''+Edit4.Text+''', CountGoods='''+Edit5.Text+''', CodeGoods='''+Edit1.Text+''' WHERE IDGoods='''+IntToStr(nowID)+'''');

  FormSklad.QueryGeneralSklad.ExecSQL;

  Close;

  FormSklad.ShowGeneralSklad;

end;

 

procedure TFormEditGoods.FormActivate(Sender: TObject);

begin

  ShowGeneralSklad;

end;

 

procedure TFormEditGoods.BitBtn2Click(Sender: TObject);

begin

FormEditGoods.Close;

end;

end.

 

Переменные  и процедуры модуля

unit UnitContract;

 

interface

 

uses

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

  Dialogs, Grids, DBGrids, UnitSklad, StdCtrls, Buttons, ExcelXP, WordXP,

  OleServer;

 

type

  TFormContract = class(TForm)

    DBGridContract: TDBGrid;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    BitBtn4: TBitBtn;

    BitBtn5: TBitBtn;

    BitBtn6: TBitBtn;

    Label1: TLabel;

    ComboBox1: TComboBox;

    procedure FormActivate(Sender: TObject);

    procedure ShowContract;

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure DBGridContractCellClick(Column: TColumn);

    procedure DBGridContractKeyUp(Sender: TObject; var Key: Word;

      Shift: TShiftState);

    procedure BitBtn3Click(Sender: TObject);

    procedure BitBtn4Click(Sender: TObject);

    procedure BitBtn5Click(Sender: TObject);

    procedure BitBtn6Click(Sender: TObject);

    procedure ComboBox1Change(Sender: TObject);

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

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormContract: TFormContract;

  fClient,fPay,fDeliver:string; {Строки, хранящие переметры фильтрации данных}

 

implementation

 

uses UnitEditContract;

 

{$R *.dfm}

{Процедура отображения таблицы <<Contract>>}

procedure TFormContract.ShowContract;

begin

  FormSklad.QueryContract.Close;

  FormSklad.QueryContract.SQL.Clear;

  FormSklad.QueryContract.SQL.Add('SELECT c.IDContract, b.Enterprise Предприниматель, b.Shop Магазин, ');

  FormSklad.QueryContract.SQL.Add(' a.NameGoods Наименование, d.NameSection Раздел, e.NameManufacture Производитель, ');

  FormSklad.QueryContract.SQL.Add(' c.CountGoods Кол_во, c.Pay Опл, c.Delivery Отг ');

  FormSklad.QueryContract.SQL.Add(' from Contract as c, Clients as b, GeneralSklad as a, Section as d, Manufacture as e ');

  FormSklad.QueryContract.SQL.Add(' where b.IDClient=c.Client and a.IDGoods=c.Goods and d.IDSection=a.Section and e.IDManufacture=a.Manufacture'+fPay+fDeliver+fClient);

  FormSklad.QueryContract.Open;

  DBGridContract.Fields[0].Visible:=false;

  if not FormSklad.QueryContract.IsEmpty then

    begin

      FormSklad.QueryContract.First;

      nowID:=FormSklad.QueryContract.FieldValues['IDContract'];

    end;

end;

 

procedure TFormContract.FormActivate(Sender: TObject);

begin

  fPay:='';{Фильтрация отсутствует}

  fDeliver:='';

  fClient:='';

  {Заполнение списка  клиентов для выбора параметра  фильтрации по клиентам}

  FormSklad.QueryClients.Close;

  FormSklad.QueryClients.SQL.Clear;

  FormSklad.QueryClients.SQL.Add('SELECT Enterprise FROM Clients ORDER BY Enterprise');

  FormSklad.QueryClients.Open;

  ComboBox1.Clear;

  FormSklad.QueryClients.First;

  while not FormSklad.QueryClients.Eof do

    begin

      ComboBox1.Items.Add(FormSklad.QueryClients.FieldValues['Enterprise']);

      FormSklad.QueryClients.Next;

    end;

  ComboBox1.Text:=FormSklad.QueryClients.FieldValues['Enterprise'];

  ShowContract;

end;

 

 

 

procedure TFormContract.BitBtn1Click(Sender: TObject);

var kol,goods:string;

    pay,delivery:boolean;

begin

  FormSklad.QueryContract.Close;

  FormSklad.QueryContract.SQL.Clear;

  FormSklad.QueryContract.SQL.Add('SELECT Goods, CountGoods Кол_во, Pay Опл, Delivery Отг ');

  FormSklad.QueryContract.SQL.Add(' from Contract where IDContract='''+IntToStr(nowID)+'''');