
- •230103 «Автоматизированные системы обработки информации и управления»
- •Работа с таблицами Создание таблицы в режиме конструктора
- •Практическая часть
- •1. Таблица product_group, которая содержит следующие поля:
- •2. Таблица products, которая содержит следующие поля:
- •3. Таблица prihod, которая содержит следующие поля:
- •4. Таблица ed_izmer, которая содержит следующие поля:
- •5. Таблица postav_ik, которая содержит следующие поля:
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 2
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 5
- •Теоретическая часть
- •Практическая часть
- •Создаем форму для справочника «Поставщики»
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 7
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 8
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 9
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 11
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 12
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 14
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 15
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
Практическая часть
На этом уроке мы создадим вторую форму, в которой будут отражаться данные о продуктах для каждого прихода.
Приступим к созданию формы.
Создаем новую форму File->New->Form –Delphi
В инспекторе объектов устанавливаем следующие свойства для новой формы
Name -> Form_prihod_prod;
Visible->False;
Сохраните модуль с именем prihod_prod.
Пропишем uses general, prihod, unit_dm; после раздела implementation в программном модуле unit prihod_prod.
А программном модуле unit general главной формы пропишем Uses ed_izmer, product_group, postav_ik, products, prihod, prihod_prod;
А программном модуле unit prihod формы прихода (form_prihod) пропишем uses general, unit_dm, prihod_prod;
Далее размещаем на форме следующие компоненты
Три кнопки TButton, компонент TEdit и пять компонентов TLable из вкладки Standart
В инспекторе объектов для Button1 устанавливаем свойство Caption -> Новая запись;
для Button2 устанавливаем свойство Caption -> Удалить запись;
для Button3 устанавливаем свойство Caption -> Закрыть;
для Edit1 устанавливаем свойство Name-> docum_number, NumbersOnly->True;
для Label1 устанавливаем свойство Caption -> Документ номер;
для Label2 устанавливаем свойство Caption -> от;
для Label3 устанавливаем свойство Caption -> Поставщик;
для Label4 устанавливаем свойство Caption -> Итого на сумму
для Label5 устанавливаем свойство Caption -> руб.
Из вкладки Win32, компонент TDateTimePicker
В инспекторе объектов для него устанавливаем свойство Format -> dd.MM.yyyy, Time -> 0:00:00;
Далее из панели компонентов dbGo (ADO) размещаем на форме компоненты два TADOTable и TADOQuery.
для ADOTable1 в инспекторе объектов свойство Name записываем table_copy_prihod,
Connection устанавливаем -> form_general.ADOConnection1
TableName-> prihod,
Active-> True;
для ADOTable2 в инспекторе объектов свойство Name записываем table_storage,
Connection устанавливаем -> form_general.ADOConnection1
TableName-> strorage,
Active-> True;
Выбираем table_storage и в структуре (Structure) -> storage -> Fields -> щелкнем правой кнопкой мыши и выберем Add all fields.
должно получиться следующее:
Далее выбираем поле id и в инспекторе объектов устанавливаем у него свойство Visible->False.
Для поля id_product устанавливаем свойство Visible->False.
Для поля id_product_group устанавливаем свойство Visible->False.
Для поля id_prihod устанавливаем свойство Visible->False.
Для поля id_ed_izmer устанавливаем свойство Visible->False.
Для поля quantity
DisplayFormat->.###
DisplayLabel -> Количество;
DisplayWidth -> 10;
Для поля price
DisplayFormat->.##
DisplayLabel -> Цена;
DisplayWidth -> 10;
Для поля date_realization
DisplayLabel -> Реализовать до:;
DisplayWidth -> 18;
Далее создаем выпадающее поле Lookup (поле подстановки) для просмотра данных из справочника «Продукты».
Для этого в структуре (Structure) -> Storage -> Fields -> щелкнем правой кнопкой мыши и выберем New field….
и заполняем
В поле Name: пишем product;
в поле Type: выбираем String;
выбираем поле Lookup;
в Key Fields:выбираем id_product;
в Dataset: выбираем form_general.table_products;
в Lookup Keys: выбираем id;
а в Result Field: выбираем product_name жмем ОК
В инспекторе объектов для созданного поля свойство DisplyLabel-> Продукт, DisplyWidth-> 20 и перемещаем поле мышкой в позицию после поля id_product.
Далее создаем выпадающее поле Lookup (поле подстановки) для просмотра данных из справочника «Единицы измерения».
Для этого в структуре (Structure) -> Storage -> Fields -> щелкнем правой кнопкой мыши и выберем New field…. и делаем аналогично предыдущему …
В поле Name: пишем ed_izmer;
в поле Type: выбираем String;
выбираем поле Lookup;
в Key Fields:выбираем id_ed_izmer;
в Dataset: выбираем form_general.table_ed_izmer;
в Lookup Keys: выбираем id;
а в Result Field: выбираем ed_name жмем ОК
В инспекторе объектов для созданного поля свойство DisplyLabel-> Ед.изм., DisplyWidth-> 20 и перемещаем поле мышкой в позицию после поля product.
Далее создаем вычисляемое поле summa .
Для этого в структуре (Structure) -> Storage -> Fields -> щелкнем правой кнопкой мыши и выберем New field…. и делаем аналогично предыдущему …
В поле Name: пишем summa;
в поле Type: выбираем Float;
выбираем поле Calculated;
и жмем ОК
В инспекторе объектов для созданного поля свойство DisplyLabel-> Сумма., DisplyWidth->10, DisplayFormat->.## .
Свяжем таблицу table_storage с таблицей table_prihod в Datamodule (dm) для этого выбираем компонент table_storage и в инспекторе объектов свойство MasterSource -> dm.prihod, MasterFields->…
и в открывшемся окне выбираем в левом окне id_prihod а в правом окне id нажимаем Add.
В окне JoinedFields должна появиться связь
Нажимаем ОК и связь между таблицами установлена.
Для table_storage устанавливаем свойство Active-> True;
для ADOQuery1 в инспекторе объектов свойство Name записываем ADOQuery_summa,
Connection устанавливаем -> form_general.ADOConnection1;
DataSource-> dm.prihod;
SQL (TString) -> в открывшемся окне вводим следующий запрос
SELECT storage.id_prihod, Sum([storage].[quantity]*[storage].[price]) AS [sum] FROM storage GROUP BY storage.id_prihod HAVING (((storage.id_prihod)=:id)); |
далее выбираем свойство Parameters((TParameters)
Создаем новый параметр Name->id
Value->Type->Integer; Выбираем ADOQuery_summa и в структуре (Structure) -> ADOQuery_summa -> Fields -> щелкнем правой кнопкой мыши и выберем Add all fields.
Из вкладки Data Access помещаем на форму три компонента TDataSource.
для DataSource1 в инспекторе объектов свойство Name записываем summa,
DataSet-> ADOQuery_summa;
для DataSource2 в инспекторе объектов свойство Name записываем postav_ik,
DataSet-> Form_general.table_postav_ik;
для DataSource3 в инспекторе объектов свойство Name записываем storage,
DataSet-> table_storage;
Из вкладки Data Controls помещаем на форму компоненты TDBLookupComboBox , TDBGrid и TDBEdit.
для DBGrid1 в инспекторе объектов свойство DataSource-> storage, а свойство Options->dgRowSelect->True.
для DBEdit1 в Name-> DBEdit_summ, DataSource->summa, DataField->sum, ReadOnly->True.
для DBLookupComboBox1 в инспекторе объектов свойство Name записываем DBLookup_postav_ik, ListSource->postav_ik, ListField->postav_ik_name, KeyField->id, DataSource->dm.prihod, DataField->id_postav_ik.