
- •Методология объектно-ориентированного программирования
- •Проектирование интерфейса пользователя
- •Корректность ввода данных
- •Разработка аис с использованием среды Delphi
- •Разработка главной формы
- •Установка связи с бд
- •Создание справочника поставщиков
- •Создание справочника клиентов
- •Поле dbEdit и кнопки управления
- •«Справочник Комбинат»
- •Кнопки (изменить, Сохранить, Закрыть)
- •Создаем пиктограммы в главной форме
- •Сортировка записей таблицы
- •Создание вычисляемых полей
- •Поиск данных по содержимому
- •Сложные формы
- •Справочник сырья
- •Создание кнопки «Пересчет»
- •Создание журнала «изготовление товара и сырья»
- •Создание журнала продаж
- •Создание связи один ко многим в форме
- •Создание связанного списка в dbGrid
- •Сложные запросы
Справочник сырья
Создать форму «Справочник сырья», которая в верхней части содержит поля ввода, кнопки добавить, сохранить, удалить; в средней части содержит таблицу DBGrid, и в нижней части окна панель поиска.
Так как форма будет отображать сведения из двух таблиц, то в модуль 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
Отредактировать поля вывода в компоненте ADOSirye -> щелкнуть два раза -> добаляем все поля. Все ключевые поля – невидимы (visible –false).
Создаем форму «Справочник сырья», выполнив набор стандартных действий.
UnitSirye
FormSirye
Вызвать данный справочник из пункта главного меню
Заходим в главную форму, меню, справочник сырья.
Создаем интерфейс формы
Label вид сырья DBLlookUpComboBox (свойства см. выше)
Label наименование DBEdit1
Label цена начальная DBEdit2
Label цена итоговая DBEdit3
Label единица измерения DBComboBox
Button: Добавить Сохранить Удалить
DBGrid (свойства)
Обработка кнопки добавить
DateDB.ADOSirye.append;
DBEdit1.text:=’’;
DBEdit2.text:=’’;
DBEdit3.text:=’’;
Обработка кнопки сохранить
DBGrid.SetFocus;
If DateDB.ADOSirye.Modified then DateBD.ADOSirye.post;
Кнопка удалить
If Application.messagebox(Pchar (‘вы действительно…?’), ‘внимание!!!’,MB_OkCancel)=id_ok then datebd.adOTovar.delete;
Создать в нижней части формы поиск записей
Создание кнопки «Пересчет»
В форме «Справочник товаров» необходимо создать кнопку «Пересчет», которая будет производить пересчет итоговой цены товара, в зависимости от установления сорта товара.
Создаем кнопку «Пересчет».
Обработка кнопки:
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;