Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

3.7.1. Визуальные средства

Для примера составим запрос, в который включим все поля таблицы строек и наименования заказчиков и подрядчиков из таблиц заказчиков и подрядчиков. Разместим компонентыQuery (со свойствомActive=True), DataSource(со свойствами:Name=SourceBazoviiZapros,DataSet=Query1) с панелиDataAccessна страницеComponentsмодуля данных форме и выберем командуSQL Builder(построитель запросов), и появится окно построителя (рис. 3.7.1.1). В спискеDatabaseвыберем базуStroiki. Используя спи­сокTable, вы­бе­­рем таблицыStroi­ki,Podrjdhiki,Zakaz­hiki. Мыш­кой уста­но­вим связь меж­ду этими табли­цами по по­лямKpиKzсоот­вет­ствен­но. Га­лоч­кой по­ме­тим по­ля, выводи­мые в зап­рос. На страницеCriteriaзада­дим ус­ло­вия отбора за­пи­­сей (например, код заказчика равен 1).

Рис. 3.7.1.1. Создание запросов

На странице Sortingзадается список полей сортировки в порядке убывания приоритетов. Порядок сортировки задается кнопкамиA..Z(по возрастанию),Z..A(по убыванию).

Для проверки запроса нажмем кнопку Execute Query. КнопкойSavethe current queryсохраним его в базе под именемBazoviiZapros; его можно посмотреть и откорректировать редактором запроса, вызываемого кнопкойShow and Edit SQL(рис. 3.7.1.2).

Рассмотрим формирование итоговых запросовна примере: в запрос включить код, наименование подрядчика и итоговые суммы выполненных работ и сметных сумм по всем стройкам каждого подрядчика (рис.3.7.1.2). Разместим в окне запросов и свяжем по коду подрядчика таблицы строек и подрядчиков. Отметим выводимые в запросе поляKp,Np,Ss,Fs. Перейдем на страницуSelectionи щелкнем по полюSs, выберем командуSummary,по которой добавится одноименный столбец. Изменим имяSsнаSumSsи в ячейке колонкиSummaryвыберем операциюSum(итоговая сумма). Всего может быть несколько групповых операций:Count(число всех значений по­ля, например, число стро­ек у подрядчика),Avg, Min, Max(среднее, мини­маль­­ное, максималь­ное чис­­ла в группе). Сло­воDictinct после наиме­но­ва­ния опера­ции задает режим игнори­ро­вания ду­б­­­ли­рую­щих зна­че­ний. Ана­логично просумми­ру­ем полеFs. На страницеGroupingв колонкеGrouped Onукажем поля груп­пировкиKp,Npи выполним запрос. Рис. 3.7.1.2. Итоговый запрос

На странице Group Criteriaможно задать условие отбора итоговых записей по группе, например: вывести только крупных подрядчиков с суммарным объемом выполненных работ более 1000000р.

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

Для отображения запроса на форме, в редакторе полей для объекта Query1добавим все или отдельные поля запроса. Разместим компонентDBGridна форме со значением его свойстваDataSource, равным Data­Mo­du­le2.SourceBazoviiZapros, сформируем столбцы этой таблицы.

Запрос может быть выполнен непосредственно из программы методами ExecSQL,Execute(п. 3.13, 3.14) или из проводникаSQLExplorer, вызываемого командойDataBase/Explore. В проводнике можно набрать текст запроса на страницеEnter SQL, выполнить его кнопкойExcute Queryи сохранить его в текстовом файле командойObject/Save As.

Запрос можно создать и средствами DatabaseDeskop(командойTools/Database Desktop/File/New/QBE Query).