Далее создаем вычисляемое поле 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.
Вопросы для контроля
1. Для чего нужен компонент TDBNavigator
2. Как обозначается Указатель текущей записи перемещается к первой записи файла данных?
3. Как обозначается Указатель текущей записи перемещается к предыдущей записи файла данных?
4. Как обозначается Указатель текущей записи перемещается к следующей записи файла данных?
5. Как обозначается Указатель текущей записи перемещается к последней записи файла данных?
6. Что позволяет свойство VisibleButtons?
Литература
1. Фаронов В.В. Программирование на языке высокого уровня: Учебник для вузов. -СПб.: Питер, 2003.
2. Бобровский С.И. Delphi 7. Учебный курс. - СПб.: Питер, 2005.
3. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Visual Basic, C++ Builder, Delphi. - СПб.: БХВ - Петербург, 2005.