Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РиЭ УБД(4к1с).docx
Скачиваний:
0
Добавлен:
25.04.2019
Размер:
57.01 Кб
Скачать

Справочник сырья

Создать форму «Справочник сырья», которая в верхней части содержит поля ввода, кнопки добавить, сохранить, удалить; в средней части содержит таблицу DBGrid, и в нижней части окна панель поиска.

  1. Так как форма будет отображать сведения из двух таблиц, то в модуль DateBD добавить две пары компонентов связи ADOTable и DateSource.

Для таблицы сырье:

ADOTable свойства:

Name ADOSirye

Connection ADOCombinat

Tablename – Sirye

Active – true

DateSource свойства:

Name DateSirye

DataSet ADOSirye

Для таблицы вид сырья:

ADOTable свойства:

Name ADOVidSirye

Connection ADOCombinat

Tablename – VidSirye

Active – true

DateSource свойства:

Name DateVidSirye

DataSet ADOVidSirye

  1. Отредактировать поля вывода в компоненте ADOSirye -> щелкнуть два раза -> добаляем все поля. Все ключевые поля – невидимы (visible –false).

  2. Создаем форму «Справочник сырья», выполнив набор стандартных действий.

UnitSirye

FormSirye

  1. Вызвать данный справочник из пункта главного меню

Заходим в главную форму, меню, справочник сырья.

  1. Создаем интерфейс формы

Label вид сырья DBLlookUpComboBox (свойства см. выше)

Label наименование DBEdit1

Label цена начальная DBEdit2

Label цена итоговая DBEdit3

Label единица измерения DBComboBox

Button: Добавить Сохранить Удалить

DBGrid (свойства)

  1. Обработка кнопки добавить

DateDB.ADOSirye.append;

DBEdit1.text:=’’;

DBEdit2.text:=’’;

DBEdit3.text:=’’;

  1. Обработка кнопки сохранить

DBGrid.SetFocus;

If DateDB.ADOSirye.Modified then DateBD.ADOSirye.post;

  1. Кнопка удалить

If Application.messagebox(Pchar (‘вы действительно…?’), ‘внимание!!!’,MB_OkCancel)=id_ok then datebd.adOTovar.delete;

  1. Создать в нижней части формы поиск записей

Создание кнопки «Пересчет»

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

Создаем кнопку «Пересчет».

Обработка кнопки:

var cena, kof, cena_itog:real;

begin

If dblookupcombobox.keyValue=1 then

Begin

cena:=dateBD.ADOTovarprice_start.Value;

kof:=dateBD.ADOTovarVidstavka.value;

cena_itog:=cena*kof;

End;

If dblookupcombobox.keyValue=2 then

Begin

cena:=dateBD.ADOTovarprice_start.Value;

kof:=dateBD.ADOTovarVidstavka.value;

cena_itog:=cena*kof;

End;

If dblookupcombobox.keyValue=3 then

Begin

cena:=dateBD.ADOTovarprice_start.Value;

kof:=dateBD.ADOTovarVidstavka.value;

cena_itog:=cena*kof;

End;

DateBD.ADOTovar.Edit;

dateBD.ADOTovarprice_itog.Value:=cena_itog;

dateBD.ADOTovar.Post;

end;

// В БД «вид товара» и «вид сырья» там, где находятся действительные числа, берем «одинарные с плавающей точкой»

Сделать такую же кнопку для «справочника сырья»

Создание журнала «изготовление товара и сырья»

В разрабатываемой форме будут отображаться сведения из пяти таблиц базы данных: изготовление, сырье, вид сырья, товар, вид товара. Поэтому в модуль DateBD добавляем 5 пар компонентов связи.

Для таблицы Вид сырья:

ADOTable свойства:

Name ADOSiryeVid_1

Connection ADOCombinat

Tablename – Vid_Sir

Active – true

DateSource свойства:

Name DateSiryeVid_1

DataSet ADOSiryeVid_1

Для таблицы Сырье:

ADOTable свойства:

Name ADOSirye_1

Connection ADOCombinat

Tablename – Sirye

Active – true

DateSource свойства:

Name DateSirye_1

DataSet ADOSirye_1

Для таблицы Изготовления:

ADOTable свойства:

Name ADOIzgotovlenie

Connection ADOCombinat

Tablename – Izgotoblenie

Active – true

DateSource свойства:

Name DateIzgotovlenie

DataSet ADOIzgotovlenie

Для таблицы Товара:

ADOTable свойства:

Name ADOTovar_1

Connection ADOCombinat

Tablename – Tovar

Active – true

DateSource свойства:

Name DateTovar_1

DataSet ADOTovar_1

Для таблицы Вид Товара:

ADOTable свойства:

Name ADOVidTovar_1

Connection ADOCombinat

Tablename – Vid_Tovar

Active – true

DateSource свойства:

Name DateVidTovar_1

DataSet ADOVidTovar_1

В компоненте ADOIzgotoblenie отредактировать вывод полей в таблице DBGrid. Открываем ADOIzgotovlenie, добавляем все поля. Делаем системные поля невидимыми.

Создаем форму

Save as UnitIzgotovlenie

Caption – Журнал изготовления

FormStyle – MDIChild

Name – FormIzgotovlenie

Position – PosOnly

Events – OnClose – FormClose – action:=caFree;

Project – option – вправо

Use unit

Переходим в главную форму, рядом со справочниками создаем метку «Журналы», и ниже пишем «Изготовление».

Label изготовление

DBGrid

Label сырье label товар

Dblookupcombobox Dblookupcombobox

DBRadioGroup1 DBRadioGroup2

Label начальная цена товара DBEdit1 {price_start}

Label конечная цена товара DbEdit2 {price_...}

Button добавить button сохранить button закрыть

Для видов сырья и товаров используем элемент DBRadioGroup.

Свойство DBRadioGroup1:

DataSource – DataSiryeVid_1

DataField – name

Caption – Сорт сырья

Items – первый сорт, второй сорт, третий сорт

Values – 1, 2, 3

Свойство DBRadioGroup2:

DataSource – DataTovarVid_1

DataField – name

Caption – Вид Товара

Items – первый сорт, второй сорт, третий сорт

Values – 1, 2, 3

Кнопка добавить:

dateBD.ADOIzgotovlenie.Append;

DBGrid1.SetFocus;

Кнопка сохранить:

var prs, prt, sum, kol,kof1,kof2: real;

begin

// перерасчет цены сырья в зависимости от выбора вида сырья

If dbradiogroup1.ItemIndex=0 then

Begin

Kof1:=datebd.adosiryevid_1stavka.value;

Prs:=datebd.adosiryeprice_rasch.value*kof1;

End;

If dbradiogroup1.ItemIndex=1 then

Begin

Kof1:=datebd.adosiryevid_1stavka.value;

Prs:=datebd.adosiryeprice_rasch.value*kof1;

End;

If dbradiogroup1.ItemIndex=2 then

Begin

Kof1:=datebd.adosiryevid_1stavka.value;

Prs:=datebd.adosiryeprice_rasch.value*kof1;

End;

Datebd.adosirye_1.edit;

Datebd.adosirye_1price_rasch.value:=prs;

Datebd.adosirye_1.post;

// вычисление суммы изготовления в зависимости от цены товара (цена итоговая от вида товара)

Kol:=datebd.adoizgotovleniekolvo.value:

If dbradiogroup2.itemIndex=0 then

Begin

Kof2:=databd.adotovarVid_1stavka.value:

Prt:=databd.adotovar_1price_start.value*kof2;

End;

If dbradiogroup2.itemIndex=1 then

Begin

Kof2:=databd.adotovarVid_1stavka.value:

Prt:=databd.adotovar_1price_start.value*kof2;

End;

If dbradiogroup2.itemIndex=2 then

Begin

Kof2:=databd.adotovarVid_1stavka.value:

Prt:=databd.adotovar_1price_start.value*kof2;

End;

// проверка условия, что стоимость товара должна быть больше стоимости сырья

If prt<prs then

Begin

Prt:=prs*1,3;

Sum:=prt*kol;

End;

Datebd.adotovar_1.edit;

Datebd.adotovar_1price_itog.value:=prt;

Datebd.adotovar_1.post;

Dbedit2.text:=floattostrF(prt,ffgeneral,6,2);

Datebd.adoizgotovlenie.edit;

Datebd.adoizgotovleniesumma_izgot.value:=sum;

Datebd.adoizgotovlenie.post;

End;