Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
2022-12-30 | 32 |
5.00
из
|
Заказать работу |
|
|
Выполнить file->new ->form. Saveas UnitClient
Установить свойство caption – справочник клиентов
Свойство name – FormClient
Form style – MDIchild
Position – defaultonly
Чтобы дочерняя форма не запускалась, необходимо project->option все дочерние формы справа, кроме DateBD.
Для вызова формы перейти в главную форму, дважды щелкнуть по конструктору меню. Поставщик. Прописать: «application.Createform(TFormClient,formclient);»
Для того, чтобы сработало необходимо подключить модуль вызываемой формы: file-UseUnit-post
Для того, чтобы справочник закрывался при нажатии на крестик, активировать его и открыть вкладку Events-OneClose-дважды щелкнуть и прописать: «caFree;»
Для создания визуальных компонентов на справочнике необходимо для новой формы создавать набор соответствующих компонентов в DateBD.
С вкладки ADOдобавить ADOtable. Установить свойства: name –AdoClient, connection-выбираем, tablename- выбираем, active – true
В модуль DateBD с вкладки DateAccess расположить DateSource. Свойства: name – client, `dataset – AdoClient
К модулю UnitClient нужно подключить модуль UnitBD: fileUseUnit
Расположить на справочнике компонент DBGrid с вклDateControls. Установить свойство:
Для отображения данных в сетке DBGridправильно, надо перейти компонент dateBD,дважды щелкнуть ADOClient. Правой кнопкой кликнуть addallfields. Установить свойство visible – true
Displaylabelимя отчество установить ширину widht
Добавить навигатор с DateControl
dataSource – Client
Поле DBEdit и кнопки управления
1) Создать справочник комбината, отображающий сведения о предприятии с возможностью внесения изменения данных в поля таблицы
2) File -> new -> form
Save as UnitKombinat
Caption: Справочник комбината
Name: FormKombinat
FormStyle: MDIChild
Position: PostOnly
3) Вызвать справочник из меню главной формы:
Caption: Kombinat
Application.CreateForm(TFormKombinat,formKombinat);
4) Справочник комбината
|
Events -> OnClose -> FormClose
5) Убрать автозапуск: project -> option
6) Begin
Action:=cafree;
End;
7) Создать интерфейс формы
С вкладки DataControls -> DBEdit
Перед расположением элементов необходимо в модуль UnitBD добавить компоненты связи с базой данных «DataBD»
ADO -> ADOtable
Name: ADOZavod
Connection -> ADOKombinat
Table name -> director
Active -> true
Data Access -> data source (перенос в «Data BD»)
Name -> DataZavod
«Справочник Комбинат»
File -> UseUnit -> UseBD
DBEdit свойства
Data source -> DataBD.DataZavod
Data Field -> name
Создать пять окон (name, adress, telephone, mail)
Кнопки (изменить, Сохранить, Закрыть)
1) DBEdit.SetFocus; - изменить
2) If DateBD.ADOZavod.Modified then DateBD.ADOZavod.Post – сохранить
3) Close; - закрыть
Пример 2: в справочнике поставщиков создаем вместо навигатора кнопки управления (первая, последняя, следующая, предыдущая, добавить, отменить, удалить, сохранить)
1. DateBD.ADOPostavchik.FindFirst;
2. DateBD.ADOPostavchik.FindLast;
3. DateBD.ADOPostavchik.FindNext;
4. DateBD.ADOPostavchik.FindPrior;
5. DateBD.ADOPostavchik.Append; DBGrid1.SetFocus
6. DateBD.ADOPostavchik.Cancel;
7. If DateBD.ADOPostavchik.Eof then abort; if messagebox(0,’Вы хотите удалить данную запись? ‘,’Запрос на удаление’,33)=1 then DateBD.ADOPostavchik.Delete
8. DateBD.ADOPostavchik.Post
Сделать те же кнопки в справочнике клиентов
Создаем пиктограммы в главной форме
Переходим в главную форму и с вкладки WIN выбираем элемент Imagelist
Дважды щелкаем по Image и в левом углу добавляем иконки 12х12.
В каждом подпункте меню в графе свойств Image выбираем нужную иконку.
Сортировка записей таблицы
Для сортировки записей используют index, field name - строковое значение имена поля, которое можно изменить программно.
Пример:
Создать в справочнике клиентов (поставщиков) две кнопки, которые будут производить сортировку по фамилии и по адресу. Для этого располагаем на форме
Label сортировка записей
Buttom1 по фамилии
Buttom2 по адресу
Обработка кнопок
datebd.adopostavhik.indexfieldnames:=’fam’;
datebd.adopostavhik.indexfieldnames:=’address’;
Создание вычисляемых полей
в редакторе полей имеется возможность создания новых полей, которые формируют свои значения на основе значений реально существующих вычисляемых полей. Значения данных полей могут сохранятся в БД, но также могут просто отображаться на форме или отчете.
|
Пример:
Создать вычисляемое поле, выводящее в одной строке фамилию, имя, отчество.
1. Для этого откроем редактор полей
DateBD -> ADOPostavhik
Вызвать контекстное меню (правой кнопкой) -
2. В окне новое поле заполнить две рамки:
Name - kod name
Size - 50
Type - string
Field type – calculated
Ok
3. Для организации работы вычисляемого поля необходимо создать обработчик компонента adoPostavhik (метод) - onCaleField. Для этого выделить компонент adopostavhik и на вкладке events 2щелкнуть по onCaleField.
begin
Adopostavchikodname.value:=adopostavchikfam.value+’ ’+ adopostavchikname.value+’ ’+ adopostavchikotch.value;
4. Для отображения вычисляемого поля добавить на форму label
В обработке кнопки вывод дописать команду:
Label5.caption:=datebd.adopostavchikkodname.value;
Поиск данных по содержимому
Для поиска данных в таблице БД в простейшем случае используется метод фильтрации записи.
Пример:
В форму справочник поставщиков добавить в поле ввода критерий поиска и кнопку
Панель (поиск)
Text box
Label поиск
Edit1
Buttom1 по фамилии
Buttom2 по адресу
Buttom3 сброс
Обрабатываем кнопки:
Кнопка по фамилии:
begin
If length(edit1.text)>0 then
Datebd.adopostavchik.filtered:=true
Else datebd.adopostavchik.filtered:=false;
Datebd.adopostavchik.filter:=’fam=’’’+edit1.text+’’’’;
End;
Кнопка по адресу:
Begin
If length(edit1.text)>0 then
Datebd.adopostavchik.filtered:=true
Else dateb.adopostavchik.filtered:=false;
Datebd.adopostavchik.filter:=’address=’’’+edit1.text+’’’’;
End;
Кнопка Сброс:
datebd.adopostavhik.filtered:=false;
edt1.text:='';
edt2.text:='';
edt3.text:='';
Примечание:
На практике для поиска записей при помощи фильтрации создается отдельная форма поиска, которая вызывается из формы, где производится поиск.
Сохранить
Unitpostpoisk
Form style - mdi child
Caption - поиск
Name - formpostpoisk
Position - top center
Project – option вправо
Cafree;
В справочник поставщиков добавляем кнопку поиск
Application.createform(TFormpostpoisk, formpostpoisk))
Use unit
Label по фамилии
Label по имени
Label по адресу
Label по отчеству
Добавляем 4 Edit и 6 Buttom (3*поиск, сброс, закрыть)
Textbox edit
Сложные формы
В БД «комбинат» таблица «товар» является дочерней по отношению к таблице «вид товара»
Поэтому при создании формы «справочник товаров» необходимо учитывать данное условие. То есть при заполнении таблицы «Товар» будет происходить только при наличии заполненной связи kod (id_vid). Такое заполнение можно организовать при помощи раскрывающегося списка dblookupcombobox
|
Пример: создать сложную форму справочника товаров.
1) Создаем новую форму.
Save as unittovar.
Caption – справочник товаров
Name FormTovar
FormStyle MDIChild
Position DefaultPosOnly
Project -> option перевести вправо
Use unit -> unit bd
Events -> OnClose -> FormClose -> action:=caFree;
Вызвать данный справочник из пункта главного меню
Заходим в главную форму, меню, справочник товаров.
2) В модуль DateBD располагаем компоненты связи с таблицами Товар и вид товара
Для таблицы товар:
ADOTable свойства:
Name ADOTovar
Connection ADOCombinat
Tablename – Tovar
Active – true
DateSource свойства:
Name DateTovar
DataSet ADOTovar
Для таблицы Вид товара:
ADOTable свойства:
Name ADOVidTovar
Connection ADOCombinat
Tablename – Vid_Tovar
Active – true
DateSource свойства:
Name DateVidTovar
DataSet ADOVidTovar
3) Отредактировать поля вывода в компоненте ADOTovar -> щелкнуть два раза -> добаляем все поля. Все ключевые поля – невидимы (visible –false).
Поле name:
DisplayLabel – наименование
DisplayWhit - 15
Поле EdIzm:
DisplayLabel – единица измерения
DisplayWhit – 15
Поле PriceStat:
DisplayLabel – начальная цена
DisplayWhit - 19
Carrency – true
Поле Priceitog:
DisplayLabel – итоговая цена
DisplayWhit - 19
Carrency – true
Поле Nal (логическое):
DisplayLabel – наличие
DisplayValues – да;нет
4) Добавить в таблицу Товар поле Наличие
5) Создаем интерфейс справочнику товаров
Вид товара: [dblookupcombobox]
DBGrid
Кнопки: Добавить, Сохранить, Удалить, Поиск, Закрыть.
BDGrid DataSource -> DateTovar
6) Dblookupcombobox свойства:
ListSource – DateBD.DateVidTovar (таблица из которой берут сведения)
ListField – name (поле из таблицы, которое отобразится в списке)
KeyField – id
DataSource – DateBD.DateTovar (таблица, куда заносят товар)
DataField - id_vid (заполняемое поле)
DropDownRod – количество строк в открывающемся списке
7) Если поле таблицы базы данных имеет ограниченное количество значений, для их ввода и отображения удобно использовать раскрывающейся список.
В таблице товаров есть ограниченный список – единицы измерения. Для создания списка раскрывающегося списка в таблице DBGrid надо:
Вызвать контекстное меню таблицы DBGrid (правая кнопка мыши) и выбрать первую команду (редактор столбцов).
Вызвать контекстное меню редактора и добавить все поля (add all).
|
Ключевые поля переопределить в невидимые.
Выделить поле Единицы измерения и в свойстве PickList прописать строки раскрывающегося списка. OK
8) Кнопка добавить должна вызвать дополнительную форму «Новые записи»
Выполняем стандартный набор действий, свойств
UnitTovarDob
FormTovarDob
9) label наименование DBEdit1
label единица измерения DBComboBox
label цена начальная DBEdit2
label цена итоговая DBedit3
DBCheckBox
· DBEdit1 DataSource – DateTovar
DataField – name
· DBComboBox DataSource – DateTovar
DateField – ed_izm
Items – 2 щелчка – вписать вручную
Style – DropDownList
· DBEdit2 DataSource – DateTovar
DataField – price_start
· DBCheckBox свойства:
DataSource – DataTovar
DataField – nal
Alignvent – можно выбрать
Caption – Наличие
Вкладка additional – bitbtn
Kind – bkclose
10) Доработать кнопку добавить на форме Справочник товаров
DataBD.ADOTovar.Append;
application.CreateForm(TFormTovarDob, FormTovarDob);
DBGrid.SetFocus;
11) Кнопка сохранить
DateBD.ADOTovar.Post;
12) Кнопка удалить
If Application.messagebox(Pchar (‘вы действительно…?’), ‘внимание!!!’,MB_OkCancel)=id_ok then datebd.adOTovar.delete;
13) Обработка кнопки поиск
Кнопка поиск вызывает дополнительное окно «поиск записей»
Справочник сырья
Создать форму «Справочник сырья», которая в верхней части содержит поля ввода, кнопки добавить, сохранить, удалить; в средней части содержит таблицу 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
2. Отредактировать поля вывода в компоненте ADOSirye -> щелкнуть два раза -> добаляем все поля. Все ключевые поля – невидимы (visible –false).
3. Создаем форму «Справочник сырья», выполнив набор стандартных действий.
UnitSirye
FormSirye
4. Вызвать данный справочник из пункта главного меню
Заходим в главную форму, меню, справочник сырья.
5. Создаем интерфейс формы
Label вид сырья DBLlookUpComboBox (свойства см. выше)
Label наименование DBEdit1
Label цена начальная DBEdit2
Label цена итоговая DBEdit3
Label единица измерения DBComboBox
Button: Добавить Сохранить Удалить
DBGrid (свойства)
6. Обработка кнопки добавить
DateDB.ADOSirye.append;
DBEdit1.text:=’’;
DBEdit2.text:=’’;
DBEdit3.text:=’’;
7. Обработка кнопки сохранить
DBGrid.SetFocus;
If DateDB.ADOSirye.Modified then DateBD.ADOSirye.post;
8. Кнопка удалить
If Application.messagebox(Pchar (‘вы действительно…?’), ‘внимание!!!’,MB_OkCancel)=id_ok then datebd.adOTovar.delete;
9. Создать в нижней части формы поиск записей
|
Создание кнопки «Пересчет»
В форме «Справочник товаров» необходимо создать кнопку «Пересчет», которая будет производить пересчет итоговой цены товара, в зависимости от установления сорта товара.
Создаем кнопку «Пересчет».
Обработка кнопки:
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;
Создание журнала продаж
Для базы данных комбинат создать журнал продажи товара, отражающий сведения о продаже товара определенному клиенту.
В компоненте datebd создать 4 пары компонентов связи
Для таблицы товара:
Adotable:
Name – adotovar_2
Conection – kombinat
Tablename - tovar
Active – true
Datasource:
Name – datatovar_2
Dataset – adotovar_2
Для таблицы вид товара:
Adotable:
Name – adovidtovar_2
Conection – kombinat
Tablename – vid_tovar
Active – true
Datasource:
Name – datavidtovar_2
Dataset – adovidtovar_2
Для таблицы продажи:
Adotable:
Name – adoprodaja
Conection – kombinat
Tablename - prodaja
Active – true
Datasource:
Name – dataprodaja
Dataset – adoprodaja
Для таблицы клиентов:
Adotable:
Name – adoclient_2
Conection – kombinat
Tablename - client
Active – true
Datasource:
Name – dataclient_2
Dataset – adoclient_2
Во всех компонентах ADOTable добавить поля в редакторе полей.
В компоненте ADOProdaja отредактировать вывод полей
Ключевые поля – невидимы, displaylabel,displaywidth, editmask.
Создать форму
Unitprodaja
Name - formProdaja
Caption – журнал продаж
Formstyle – MDIChild
Position – posonly
Events – onclose – action:=cafree;
Project – option – вправо
Useunit – unitbd
Добавить форму в главное меню
Создаем интерфейс:
Label вид товара dblookupcombobox1
Label товар dblookupcombobox2
Label клиент dblookupcombobox3
Dbgrid1
Buttoms добавить сохранить удалить закрыть
Dblookupcombobox1:
Listsource – adovidtovar_2
List field - name
Keyfield – id_vid_tovar
Dblookupcombobox2:
Listsource – adovtovar_2
List field - name
Keyfield – id_tovar
Data source – dataProdaja
Data field – id_tov
Dblookupcombobox3:
Listsource – adoclient_2
List field - name
Keyfield – id_client
Data source- dataProdaja
Data field – id_client
Сохранить:
Var pr, kol, sum:real;
Begin
Kol:=datebd.adoprodajakolvo.value;
Pr:=datebd.adotovar_2price_itog.value;
Sum:=kol*pr;
Datebd.adoprodaja.edit;
Datebd.adoprodajasumma_izgot.value:=sum;
Dateb.adoprodaja.post;
Удалить: самому прописать.
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!