
- •Тема 5. Разработка пользовательского интерфейса.
- •5.1. Средства быстрой разработки приложений.
- •5.2. Сложные системы. Методы их декомпозиции.
- •5.3. Создание классов разработчика.
- •5.4. Язык sql. Sql – запросы.
- •Sql – запросы.
- •Запрос 1. Простые запросы.
- •Запрос 2.Сложные условия поиска.
- •Сортировка результатов.
- •Запросы с подзапросами
- •5.5. Работа с “Word”, “Excel” и ActiveX
- •Понятие о com-клиенте и com-сервере
- •Vtf как com-клиент.
- •Листинг программы экспорта в Word
- •Основные структуры программы.
- •Комментарии к каждой строке листинга
- •Листинг программы экспорта в Excel
- •ActiveX → Календарь
- •Основные структуры программы.
- •Комментарии к каждой строке листинга
- •Листинг программы экспорта в Excel
- •ActiveX → Календарь
- •Процедура определения календарной даты
- •5.6. Визуальные средства проектирования.
- •5.6.1. Мастера.
- •5.6.2. Конструкторы.
- •5.6.3. Построители.
Sql – запросы.
Для формирования запросов в VFP используется конструкция SQL:
Select – список выбираемых полей,
From – Список таблиц,
Where – условия выборки,
Info- имя таблицы курсора.
Эта конструкция дополняется операторами, увеличивающими ее функциональность.
Формулировки запросов мы будем отрабатывать на базе данных dream-home (которая вам выдана).
Эта база данных нами уже использовалась при изучении реляционного исчисления.
Еще раз ее краткая характеристика.
Dream-home – это база данных компании, занимающейся сдачей в аренду объектов недвижимости по поручению их владельцев.
Отношения базы данных:
1. Branch – отделения фирмы.
Bno - номер отделения,
Pcode – почтовый индекс.
2. Staff – персонал фирмы.
Sno - лчный номер сотрудника,
Position – должность,
Nin – личный номер соц. страховки,
Bno – номер отделения, в котором работает сотрудник.
3. Property_for_rent – объекты недвижимости физических и юридических лиц.
Pno – номер объекта,
Ono – номер владельца недвижимости,
Sno – номер менеджера, который отвечает за работу с данным объектом,
City – место расположения объекта недвижимости,
Bno – номер отделения фирмы, ведущего данный объект.
4. Renter – арендаторы.
Rno- номер арендатора,
Pre_type – предпочтительный тип жилья.
5. Owner – владельцы.
6. Viewing – осмотр недвижимости.
Запросы к БД «Dream-Home» мы будем формулировать как процедуры к кнопкам, с наименованием запроса. Кнопки разместим на форме «Запросы SQL».
Ссылка на литературу: Т.Конноли и другие «Базы Данных», М-С.-П., 2000г. изд. Вильямс, стр.426.
Запрос 1. Простые запросы.
Текст запроса: Перечислить весь персонал с размером заработной платы больше 10000 фунтов стерлингов в год.
Используется таблица Staff и БД «Dream-home».
Select sno, fname, lname, position, salary ;
From DreamHome! Staff ;
Where
salary>10000 ;
Info
table «Запрос
1.dbf»**
результат запроса в таблицу
Browse ** просмотреть результат
Use ** закрыть таблицу после просмотра
1. Если использовать
Select * ; - то в таблице результатов запроса будут представлены все атрибуты.
2. Если нужно распечатать месячную зарплату, то
Select…………. Salary/12 as м.зарп;
будет в таблице атрибут м.зарп вместо salary и она будет разделена на 12.
Набор операторов сравнения:
= - равно,
< - меньше,
> - больше,
<= - меньше или равно,
>= - больше или равно,
<> - не равно (стандарт ISO),
!= - не равно (диалект).
Более сложные предикаты могут быть построены с помощью логических операторов:
AND – и,
OR – или,
NOT – не.
а так же с помощью скобок, используемых для определения порядка вычисления выражения. Порядок вычисления следующий:
1. Выражения вычисляются слева направо.
2. Первыми вычисляются подвыражения в скобках.
3. Операторы NOT выполняются до выполнения операторов AND и OR.
4. Операторы AND выполняются до выполнения операторов OR.
Запрос 2.Сложные условия поиска.
Текст запроса: Перечислите адреса всех отделений компании в Лондоне и Глазго.
Используется таблица Branch.
Select
bno, street, area, city, pcode ;
From DreamHome! Branch ;
Where city=”London” OR city=”Glasgow”;
Результат:
Bno |
……… |
B5 |
|
B3 |
|
B2 |
|
Запрос 3. Условия поиска с проверкой вхождения во множество (IN/NOT IN).
Проверка вхождения результата вычисления выражения в заданное множество организуется с помощью ключевого слова IN. В этом случае запрос 2 будет выглядеть следующим образом:
Select
bno, street, area, city, pcode ;
From DreamHome! Branch ;
Where city IN (”London”, ”Glasgow”);
Запрос 4.
Where city NOT IN (”London”, ”Glasgow”);
Результат:
Bno |
……… |
B7 |
|
B4 |
|
Запрос 5. Использование диапазонов (BEETWEEN/ NOT BEETWEEN) в условиях поиска.
Формулировка запроса: перечислите весь персонал с годовой зарплатой от 20000 до 30000 фунтов стерлингов.
Используется таблица Staff.
Select sno, fname, lname, position, salary ;
From DreamHome! Staff ;
Where salary BEETWEEN 20000 AND 30000;
Результат:
Sno |
……… |
SL21 |
|
SG5 |
|
Запрос 6. Условия поиска с указанием шаблонов (LIKE/ NOT LIKE).
Текст запроса: Найдите всех работников, проживающих в городе Глазго.
При выполнении этого запроса необходимо организовать поиск строки “Glasgow”, которая может располагаться в любом месте домена Address таблицы Staff.
В SQL существует два специальных символа шаблона, используемых при проверке символьных значений:
“%” – символ процента представляет любую последовательность из нуля или более символов.
“_” - символ подчеркивания представляет собой любой одиночный символ.
Все остальные представляют сами себя.
Примеры:
1. Address LIKE “H%” -этот шаблон означает, что первый символ обязательно должен быть “H”, а остальные символы не представляют интереса и не проверяются.
2. Address LIKE “H_ _ _” - этот шаблон означает, что значение должно иметь длину, равную строго четырем символам, причем первым символом должен быть символ “H”.
3. Address LIKE “%е” – этот шаблон определяет любую последовательность символов, длиной не менее одного символа, причем последним символом обязательно должен быть символ “e”.
4. Address LIKE “%Glasgow” – этот шаблон означает, что нас интересует любая последовательность символов, включающих подстроку “Glasgow”.
5. Address NOT LIKE “H% ” - этот шаблон указывает, что требуются любые строки, которые не начинаются с символа “H”.
Формулировка запроса:
Select sno, fname, lname, address, salary ;
From DreamHome! Staff ;
Where address LIKE “%Glasgow%”;