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

Автор: Пользователь скрыл имя, 06 Апреля 2013 в 09:44, курсовая работа

Краткое описание

При создании СУБД нужно четко знать:
- Задачи склада?
Склад занимается поставками товара различных фирм в торговые точки или фирменные магазины.
- Откуда берется товар?
Весь товар хранится на складе, куда его периодически завозят фирмы-производители.
- Кто покупает и реализует товар, полученный со склада?
Существуют клиенты – магазины или люди, которые реализуют товар за определенную цену (её клиент устанавливает в зависимости от дефицита товара или спроса на товар).
- Кто на складе занимается договорами?

Оглавление

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

Файлы: 1 файл

Записка к курсовой работе по базам данных.doc

— 776.00 Кб (Скачать)

  FormSklad.QueryContract.Open;

  pay:=FormSklad.QueryContract.FieldValues['Опл'];

  delivery:=FormSklad.QueryContract.FieldValues['Отг'];

  kol:=FormSklad.QueryContract.FieldValues['Кол_во'];

  goods:=FormSklad.QueryContract.FieldValues['Goods'];

  ShowContract;

  if pay then {если товар уже оплачен, нельзя отменить заказ}

    begin

      MessageDlg('Невозможно отменить заказ,  так как он уже оплачен!',mtWarning,[mbOK],0);

      exit;

    end;

  if delivery then {если  товар доставлен, нельзя отменить  заказ}

    begin

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

      exit;

    end;

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

  {Отмена  заказа}

  FormSklad.QueryContract.Close;

  FormSklad.QueryContract.SQL.Clear;

  FormSklad.QueryContract.SQL.Add('DELETE FROM Contract WHERE IDContract='''+IntToStr(nowID)+'''');

  FormSklad.QueryContract.ExecSQL;

  {Сохраняем сколько  данного товара в данный момент  на складе}

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

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

  {Изменяем количество товара на складе, т.е. возвращаем заказанный товар на склад}

  FormSklad.QueryGeneralSklad.Open;

  kol:=IntToStr(StrToInt(kol)+FormSklad.QueryGeneralSklad.FieldByName('CountGoods').AsInteger);

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('UPDATE GeneralSklad SET  CountGoods='''+kol+''' WHERE IDGoods='''+goods+'''');

  FormSklad.QueryGeneralSklad.ExecSQL;

 

  FormSklad.ShowGeneralSklad;

  ShowContract;

end;

 

procedure TFormContract.BitBtn2Click(Sender: TObject);

begin

  FormEditContract.ShowModal;

end;

 

procedure TFormContract.DBGridContractCellClick(Column: TColumn);

begin

  nowID:=FormSklad.QueryContract.FieldValues['IDContract'];{Сохраняем код текущего заказа}

end;

 

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

  Shift: TShiftState);

begin

  nowID:=FormSklad.QueryContract.FieldValues['IDContract'];{Сохраняем код текущего заказа}

end;

 

procedure TFormContract.BitBtn3Click(Sender: TObject);

begin

  fDeliver:=' and c.Delivery=False';{Включаем  фильтрацию по не доставленным  товарам}

  ShowContract;

end;

 

procedure TFormContract.BitBtn4Click(Sender: TObject);

begin

  fPay:=' and c.Pay=False';{Включаем  фильтрацию по не оплаченным товарам}

  ShowContract;

end;

 

procedure TFormContract.BitBtn5Click(Sender: TObject);

begin

  fPay:='';

  fDeliver:='';

  fClient:='';

  ShowContract;

  BitBtn6.Enabled:=true;

end;

 

procedure TFormContract.BitBtn6Click(Sender: TObject);

begin

   BitBtn6.Enabled:=false;{Невозможно  нажать кнопку, если фильтрация  включена}

end;

 

procedure TFormContract.ComboBox1Change(Sender: TObject);

begin

  if BitBtn6.Enabled then exit;{если  признак фильтрации по клиентам  не включен, то не включаем  ее}

  FormSklad.QueryClients.Close;

  FormSklad.QueryClients.SQL.Clear;

  FormSklad.QueryClients.SQL.Add('SELECT IDClient from Clients where Enterprise='''+ComboBox1.Text+'''');

  FormSklad.QueryClients.Open;

  fClient:=' and Client='+FormSklad.QueryClients.FieldByName('IDClient').AsString;

  {Включение фильра по заданному клиенту}

  ShowContract;

end;

 

procedure TFormContract.FormClose(Sender: TObject;

  var Action: TCloseAction);

begin

  FormSklad.ShowGeneralSklad;

end;

end.

 

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

unit UnitAddContract;

 

interface

 

uses

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

  Dialogs, StdCtrls, Buttons, UnitSklad, UnitContract;

 

type

  TFormAddContract = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    ComboBox1: TComboBox;

    ComboBox2: TComboBox;

    Edit1: TEdit;

    ComboBox3: TComboBox;

    Edit2: TEdit;

    ComboBox4: TComboBox;

    procedure ShowEnterprise;

    procedure ShowNameGoods;

    procedure ShowSection;

    procedure ShowManufacture;

    procedure FormActivate(Sender: TObject);

    procedure ComboBox1Change(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure ComboBox4Change(Sender: TObject);

    procedure ComboBox3Change(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormAddContract: TFormAddContract;

  Manuf,Sect:string;

 

implementation

 

{$R *.dfm}

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

procedure TFormAddContract.ShowEnterprise;

begin

  FormSklad.QueryClients.Close;

  FormSklad.QueryClients.SQL.Clear;

  FormSklad.QueryClients.SQL.Add('SELECT Shop, 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'];

  Edit2.Text:=FormSklad.QueryClients.FieldValues['Shop'];{Автоматически отображаем соответствующий предпринимателю магазин}

end;

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

procedure TFormAddContract.ShowManufacture;

begin

  FormSklad.QueryManufacture.Close;

  FormSklad.QueryManufacture.SQL.Clear;

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

  FormSklad.QueryManufacture.Open;

  ComboBox4.Clear;

  if not FormSklad.QueryManufacture.IsEmpty then

  begin

    FormSklad.QueryManufacture.First;

    while not FormSklad.QueryManufacture.Eof do

      begin

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

        FormSklad.QueryManufacture.Next;

      end;

    ComboBox4.Text:=FormSklad.QueryManufacture.FieldValues['NameManufacture'];

    Manuf:=FormSklad.QueryManufacture.FieldValues['NameManufacture'];

  end;

end;

 

{Процедура чтения  таблицы "Разделы" в список,

считывая те разделы товара, которые есть у  производителя Manuf}

procedure TFormAddContract.ShowSection;

begin

  FormSklad.QuerySection.Close;

  FormSklad.QuerySection.SQL.Clear;

  FormSklad.QuerySection.SQL.Add('SELECT d.NameSection from GeneralSklad as a, Section as d, Manufacture as e');

  FormSklad.QuerySection.SQL.Add(' where a.Section=d.IDSection and a.Manufacture=e.IDManufacture and e.NameManufacture='''+Manuf+'''');

  FormSklad.QuerySection.Open;

  ComboBox3.Clear;

  if not FormSklad.QuerySection.IsEmpty then

  begin

    FormSklad.QuerySection.First;

    while not FormSklad.QuerySection.Eof do

      begin

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

        FormSklad.QuerySection.Next;

      end;

    ComboBox3.Text:=FormSklad.QuerySection.FieldValues['NameSection'];

    Sect:=FormSklad.QuerySection.FieldValues['NameSection'];{Сохраняем код раздела}

  end;

end;

 

{Процедура отображения  наименований товара в список.

Только тех наименований, которые есть на складе по производителю  Manuf

и разделу Sect}

procedure TFormAddContract.ShowNameGoods;

begin

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('SELECT a.NameGoods from GeneralSklad as a, Section as d, Manufacture as e');

  FormSklad.QueryGeneralSklad.SQL.Add(' where a.Section=d.IDSection and a.Manufacture=e.IDManufacture and e.NameManufacture='''+Manuf+''' and d.NameSection='''+Sect+'''');

  FormSklad.QueryGeneralSklad.Open;

  ComboBox2.Clear;

  if not FormSklad.QueryGeneralSklad.IsEmpty then

  begin

    FormSklad.QueryGeneralSklad.First;

    while not FormSklad.QueryGeneralSklad.Eof do

      begin

        ComboBox2.Items.Add(FormSklad.QueryGeneralSklad.FieldValues['NameGoods']);

        FormSklad.QueryGeneralSklad.Next;

      end;

    ComboBox2.Text:=FormSklad.QueryGeneralSklad.FieldValues['NameGoods'];

  end;

  FormSklad.ShowGeneralSklad;

end;

 

procedure TFormAddContract.FormActivate(Sender: TObject);

begin

  ShowEnterprise;

  ShowNameGoods;

  ShowManufacture;

  ShowSection;

end;

 

{Процедура автоматического  отображения магазина,

соответствующего выбранному предпринимателю}

procedure TFormAddContract.ComboBox1Change(Sender: TObject);

var Enterpr:string;

begin

  Enterpr:=ComboBox1.Items[ComboBox1.ItemIndex];

  FormSklad.QueryClients.Close;

  FormSklad.QueryClients.SQL.Clear;

  FormSklad.QueryClients.SQL.Add('SELECT Shop FROM Clients WHERE Enterprise='''+Enterpr+'''');

  FormSklad.QueryClients.Open;

  Edit2.Text:=FormSklad.QueryClients.FieldValues['Shop'];

end;

 

procedure TFormAddContract.BitBtn1Click(Sender: TObject);

var manuf,sec,client,goods:string;

    kol:integer;

begin

  if (Edit1.Text='')or(Edit2.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='''+ComboBox3.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='''+ComboBox4.Text+'''');

  FormSklad.QueryManufacture.Open;

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

  {Сохранение кода выбранного клиента}

  FormSklad.QueryClientS.Close;

  FormSklad.QueryClients.SQL.Clear;

  FormSklad.QueryClients.SQL.Add('SELECT IDClient FROM Clients WHERE Enterprise='''+ComboBox1.Text+'''');

  FormSklad.QueryClients.Open;

  client:=FormSklad.QueryClients.FieldValues['IDClient'];

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('SELECT IDGoods, CountGoods FROM GeneralSklad WHERE NameGoods='''+ComboBox2.Text+''' and Manufacture='''+manuf+''' and Section='''+sec+'''');

  FormSklad.QueryGeneralSklad.Open;

  if FormSklad.QueryGeneralSklad.FieldByName('CountGoods').AsInteger<StrToInt(Edit1.Text) then

    begin {ПРоверка наличия выбранного товара на складе}

      MessageDlg('Недостаточно  данного товара на складе!',mtWarning,[mbOK],0);

      FormSklad.ShowGeneralSklad;

      exit;

    end;

  if not FormSklad.QueryGeneralSklad.IsEmpty then

    goods:=FormSklad.QueryGeneralSklad.FieldValues['IDGoods'];{Сохранение кода выбранного товара}

  kol:=FormSklad.QueryGeneralSklad.FieldByName('CountGoods').AsInteger-StrToInt(Edit1.Text);{Вычисление остатка заказываемого товара на складе}

  FormSklad.QueryContract.Close;

  FormSklad.QueryContract.SQL.Clear;

  FormSklad.QueryContract.SQL.Add('INSERT INTO Contract (Client, Goods, CountGoods, Pay, Delivery) VALUES ('''+client+''','''+goods+''','''+Edit1.Text+''', False, False)');

  FormSklad.QueryContract.ExecSQL;

  {Создание нового заказа}

  FormSklad.QueryGeneralSklad.Close;

  FormSklad.QueryGeneralSklad.SQL.Clear;

  FormSklad.QueryGeneralSklad.SQL.Add('UPDATE GeneralSklad SET  CountGoods='''+IntToStr(kol)+''' WHERE IDGoods='''+goods+'''');

  FormSklad.QueryGeneralSklad.ExecSQL;

  MessageDlg('Заказ оформлен!',mtInformation ,[mbOK],0);

  Close;

  FormSklad.ShowGeneralSklad;

end;

 

procedure TFormAddContract.BitBtn2Click(Sender: TObject);

begin

FormAddContract.Close;

end;

 

{Процедура автоматического  отображения списка разделов  и наименований товара

по выбранному производителю}

procedure TFormAddContract.ComboBox4Change(Sender: TObject);

begin

  Manuf:=ComboBox4.Items[ComboBox4.ItemIndex];

  ShowSection;

  ShowNameGoods;

end;

 

{Процедура автоматического  отображения списка наименований  товаров

по выбранному производителю  и разделу}

procedure TFormAddContract.ComboBox3Change(Sender: TObject);

begin

  Sect:=ComboBox3.Items[ComboBox3.ItemIndex];

  ShowNameGoods;

end;

end.

 

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

unit UnitEditContract;

 

interface

 

uses

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

  Dialogs, StdCtrls, Buttons, UnitSklad, UnitContract;

 

type

  TFormEditContract = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    ComboBox1: TComboBox;

    ComboBox2: TComboBox;

    ComboBox3: TComboBox;

    ComboBox4: TComboBox;

    ComboBox5: TComboBox;

    ComboBox6: TComboBox;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    Label4: TLabel;

    Label5: TLabel;

    Edit1: TEdit;

    Label6: TLabel;

    Label7: TLabel;

    Edit2: TEdit;

    Label8: TLabel;

    procedure BitBtn2Click(Sender: TObject);

    procedure ShowNowData;

    procedure ShowEnterprise;

    procedure ShowNameGoods;

    procedure ShowSection;

    procedure ShowManufacture;

    procedure FormActivate(Sender: TObject);

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

    procedure BitBtn1Click(Sender: TObject);

    procedure ComboBox3Change(Sender: TObject);

    procedure ComboBox1Change(Sender: TObject);

    procedure ComboBox4Change(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormEditContract: TFormEditContract;

  Predpr, Magazin, Naimenov, Razdel, Proizvodit, Kolvo, Oplacheno, Otgrugeno:string;

 

implementation

 

{$R *.dfm}

 

procedure TFormEditContract.ShowNowData;

begin

  FormSklad.QueryContract.Close;

  FormSklad.QueryContract.SQL.Clear;

  FormSklad.QueryContract.SQL.Add(' SELECT 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 ');

  FormSklad.QueryContract.SQL.Add(' and c.IDContract='''+IntToStr(nowID)+'''');

  FormSklad.QueryContract.Open;

  Predpr:=FormSklad.QueryContract.FieldValues['Предприниматель'];

  Magazin:=FormSklad.QueryContract.FieldValues['Магазин'];

  Naimenov:=FormSklad.QueryContract.FieldValues['Наименование'];

  Razdel:=FormSklad.QueryContract.FieldValues['Раздел'];

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

  Kolvo:=FormSklad.QueryContract.FieldValues['Кол_во'];

  Oplacheno:=FormSklad.QueryContract.FieldValues['Опл'];

  Otgrugeno:=FormSklad.QueryContract.FieldValues['Отг'];

end;

 

procedure TFormEditContract.ShowEnterprise;

begin

  FormSklad.QueryClients.Close;

  FormSklad.QueryClients.SQL.Clear;

  FormSklad.QueryClients.SQL.Add('SELECT Shop, 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:=Predpr;

  Edit2.Text:=Magazin;

end;

 

procedure TFormEditContract.ShowManufacture;

begin

  FormSklad.QueryManufacture.Close;

  FormSklad.QueryManufacture.SQL.Clear;

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

  FormSklad.QueryManufacture.Open;

  ComboBox4.Clear;

  if not FormSklad.QueryManufacture.IsEmpty then

  begin

    FormSklad.QueryManufacture.First;

    while not FormSklad.QueryManufacture.Eof do

      begin

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

        FormSklad.QueryManufacture.Next;

      end;

    ComboBox4.Text:=Proizvodit;

  end;

end;

 

procedure TFormEditContract.ShowSection;

Информация о работе Склад строительных материалов