
- •230103 «Автоматизированные системы обработки информации и управления»
- •Работа с таблицами Создание таблицы в режиме конструктора
- •Практическая часть
- •1. Таблица product_group, которая содержит следующие поля:
- •2. Таблица products, которая содержит следующие поля:
- •3. Таблица prihod, которая содержит следующие поля:
- •4. Таблица ed_izmer, которая содержит следующие поля:
- •5. Таблица postav_ik, которая содержит следующие поля:
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 2
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 5
- •Теоретическая часть
- •Практическая часть
- •Создаем форму для справочника «Поставщики»
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 7
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 8
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 9
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 11
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 12
- •Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 14
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
- •Лабораторная работа № 15
- •Теоретическая часть
- •Практическая часть
- •Вопросы для контроля
- •Литература
Вопросы для контроля
Напишите синтаксис оператора Select.
Что происходит при выполнении данного кода:
procedure TForm_general.N9Click(Sender: TObject); begin f:=0; if ActiveMDIChild.Caption<>'Остатки на складе' then begin for i:=0 to form_general.MDIChildCount-1 do if form_general.MDIChildren[i].Caption='Остатки на складе' then begin MDIChildren[i].Show;f:=1;end; end else f:=1; if f<>1 then Tform_ostatki.Create(Application); end;
Что происходит при выполнении данного кода:
procedure TForm_ostatki.FormClose(Sender: TObject; var Action: TCloseAction); begin dm.ADOQuery_ostatki.Active:=false; Action:=cafree; end;
Что происходит в данном запросе:
SELECT products.product_name, ADOQuery_prihod.id_product, [ADOQuery_prihod].[Sum-quantity]-IIf([ADOQuery_rashod].[Sum-quantity]>0,[ADOQuery_rashod].[Sum-quantity],0) AS ostatok, [ADOQuery_prihod].[sum_price]-IIf([ADOQuery_rashod].[sum_price]>0,[ADOQuery_rashod].[sum_price],0) AS summa, ADOQuery_prihod.id_ed_izmer, products.id_product_group, ed_izmer.ed_name FROM ((ADOQuery_prihod LEFT JOIN ADOQuery_rashod ON ADOQuery_prihod.id_product = ADOQuery_rashod.id_product) LEFT JOIN ed_izmer ON ADOQuery_prihod.id_ed_izmer = ed_izmer.id) LEFT JOIN products ON ADOQuery_prihod.id_product = products.id;
Что происходит в запросе:
SELECT storage.id_product, Sum([storage].[price]*[storage].[quantity]) AS sum_price, Sum(storage.quantity) AS [Sum-quantity], storage.id_ed_izmer FROM storage GROUP BY storage.id_product, storage.id_ed_izmer;
Литература
Фаронов В.В. Программирование на языке высокого уровня: Учебник для вузов. -СПб.: Питер, 2003.
Бобровский С.И. Delphi 7. Учебный курс. - СПб.: Питер, 2005.
Кетков Ю.Л., Кетков А.Ю. Практика программирования: Visual Basic, C++ Builder, Delphi. - СПб.: БХВ - Петербург, 2005.
Лабораторная работа № 12
Тема: Создание формы для учета расхода продуктов на складе
Цель: Научиться работать с TQuery
Оборудование и/или программное обеспечение: ПК, Delphi
Теоретическая часть
Связь компонентов с базами данных
Компоненты, используемые для работы с базами данных через BDE, расположены в библиотеке компонентов на страницах Data Access (доступ к данным) и Data Control (управление данными).
Каждое приложение, использующее базы данных, обычно имеет по крайней мере по одному компоненту следующих трех типов:
■ Компоненты — наборы данных (data set), непосредственно связывающиеся с базой данных. Это такие компоненты, как Table, Query, StoredProc.
■ Компонент — источник данных (data source), осуществляющий обмен информацией между компонентами первого типа и компонентами визуализации и управления данными. Таким компонентом является DataSource.
■ Компоненты визуализации и управления данными, такие, как DBGrid, DBText, DBEdit и множество других.
Связь этих компонентов друг с другом и с базой данных можно представить схемой, приведенной на рис. 3.1.
Рис. 3.1
Схема взаимодействия компонентов Delphi с базой данных
Помимо указанных компонентов в приложении может размещаться компонент Database. Этот компонент в основном используется в приложениях, работающих на платформе клиент/сер-вер. Его задачи связаны с общением с удаленным сервером, реализацией транзакций, работой с паролями. Если компонент Database не введен в приложение явно, Delphi автоматически создает его для каждой используемой в приложении базы данных.
Еще один компонент, который тоже автоматически создается Delphi — компонент Session. Это главный компонент любого приложения, работающего с базами данных. Но в явном виде эти компоненты имеет смысл вводить только в многозадачные приложения, в которых параллельно обрабатывается несколько потоков информации. Компонент Session был подробно рассмотрен в книге «Работа с локальными базами данных в Delphi 5» серии «Все о Delphi» и в данной книге этот материал не дублируется.
Возможности приложения, работающего с базами данных, определяются прежде всего тем, какой компонент используется для создания набора данных — Table или Query. Компонент Table не использует в явном виде запросов SQL. Точнее он их использует, но они остаются для пользователя за кадром. Компонент Query специально предназначен для работы с запросами SQL.
Если запрос SQL сводится к просмотру таблицы (запрос Select), то результаты этого запроса (а не сама исходная таблица) помещается во временном файле на компьютере пользователя. Правда, в отличие от набора данных, создаваемого Table, это таблица только для чтения и не допускает каких-то изменений. Впрочем, это ограничение можно обойти, и в дальнейшем будет показано, как это можно делать. Если же запрос SQL связан с какими-то изменениями содержания таблицы, то никаких временных таблиц не создается. BDE передает запрос на сервер, там он обрабатывается и в приложение возвращается информация о том, успешно ли завершена соответствующая операция. Благодаря такой организации работы эффективность Query при работе в сети становится много выше, чем эффективность Table. К тому же язык SQL, рассмотренный в главе 2, позволяет формулировать сложные запросы, которые не всегда можно реализовать в Table.