Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laboratornye_raboty.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

Практическая часть

На этом уроке мы создадим вторую форму,  в которой будут отражаться данные о продуктах для каждого прихода.

Приступим к созданию  формы.

Создаем новую форму File->New->FormDelphi

В инспекторе объектов  устанавливаем следующие свойства для новой формы

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]