- •Министерство образования российской федерации
- •Выборка данных в конструкторе запросов Visual FoxPro
- •Курский государственный технический университет.
- •1. Цель работы
- •2. Окно конструктора запросов
- •3. Определение полей результирующей таблицы
- •3.1. Выбор полей исходной таблицы
- •3.2. Использование в запросах вычисляемых полей
- •4. Построение условий для выбора записей
- •5. Упорядочение данных в запросе
- •6. Группировка полей запроса
- •7. Включение в запрос выражений и функций полей и итоговых значений
- •8. Вывод результатов запроса
- •9. Общие сведения о команде select
- •10. Формирование гибких запросов
- •10.1. Выборка по текстовому значению
- •10.6. Запросы с выбираемыми критериями
- •П усть в таблицу PatientTab занесены следующие данные (рис. 14).
- •11. Порядок выполнения работы
- •12. Контрольные задания
- •13. Контрольные вопросы
9. Общие сведения о команде select
Для формирования запросов в программах на языке Visual FoxPro используется команда SELECT, аналогичная конструкции SELECT языка запросов высокого уровня SQL.
Упрощенный синтакис команды SELECT имеет вид:
SELECT [DISTINCT] списокВыбираемыхПолей
FROM списокТаблиц
[WHERE условиеВыборки]
[GROUP BY УсловиеГруппировки]
[ORDER BY условие Упорядочения]
[INTO имя Таблицы]
[TO FILE имяФайла [ADDITIVE] | [TO PRINT]]
Опция DISTINCT используется для исключения повторяющихся строк запроса.
В качестве иллюстрации приведем примеры команды SELECT для выборок, представленных на рис.3,4,5 соответственно.
SELECT Tablegp.num, Tablegp.name, Tablegp.dater, Tablegp.inval;
FROM registrbd!tablegp
SELECT Tablegp.num, Tablegp.name, Tablegp.dater, Tablegp.inval;
FROM registrbd!tablegp;
WHERE Tablegp.inval <> .F.;
AND Tablegp.pol = "мужчина"
SELECT Tablegp.num, Tablegp.name, Tablegp.dater, Tablegp.inval;
FROM registrbd!tablegp;
ORDER BY Tablegp.num
Оператор SQL, эквивалентный созданному запросу, можно просмотреть, нажав кнопку Show the SQL window на панели инструментов Query Designer. При программировании законченных приложений команда SELECT широко используется для формирования разнообразных ведомостей. В связи с этим при создании запросов целесообразно сохранять SQL-операторы в качестве заготовок для будущих программ.
10. Формирование гибких запросов
При использовании стандартных СУБД достаточно часто, если не всегда, пользователь сам определяет критерий выборки, по которому осуществляется поиск. В этом разделе остановимся на рассмотрении данного случая.
10.1. Выборка по текстовому значению
Д
ля
примера предположим, что пользователю
необходимо осуществить поиск всех
больных по определенной группе риска.
Во избежание возникновения ошибок,
которые могут возникнуть при вводе
данных с клавиатуры, поместим выбираемые
данные из группы риска во всплывающий
список, который разместим на форме
диалога (рис. 8).
Рис. 8. Форма диалога при выборке по текстовому значению
При нажатии кнопки «Ok» – выполняется следующий код:
SELECT Patienttab.namept, Patienttab.patrpt, Patienttab.surnpt,;
Patienttab.addresspt, Patienttab.telephone, Patienttab.groupb;
FROM patienttab;
where thisform.CombGrR.value=PATIENTTAB.GROUPRISK
Как Вы можете видеть это простой SQL-запрос, но в блоке условия выборки “where” – мы пишем, то значение, которое ввел пользователь (PATIENTTAB.GROUPRISK).
10.2. Выборка по числовому значению
Рассмотрим пример поиска по числовому значению. В окне диалога, рис. 9, пользователем вводится необходимое число, например группа крови пациента, и при нажатии кнопки Ok выполняется следующий запрос:
SELECT PatientTab.*;
FROM PatientTab;
Where PatientTab.GroupB= VAL(ThisForm.nGr.Text)
Р
ис.
9. Форма
диалога при выборке по числовому значению
10.3. Выборка по дате
Рассмотрим пример поиска по дате. В окне диалога рис. 10 вводится необходимая дата (дата приема пациента) и при нажатии кнопки «Ok» выполняется запрос:
MessageBox(thisform.DatT.Value)
SELECT View2.*;
FROM View2;
Where View2.datevisit = CTOD(thisform.DatT.Text)
Р
ис.
10. Форма
диалога при выборке по дате
10.4. Выборка по интервалу дат
Рассмотрим пример поиска по числовому значению. В окне диалога, рис. 11, пользователем вводится необходимый интервал дат и при нажатии кнопки Ok выполняется следующий запрос:
SELECT View2.*;
FROM View2;
Where View2.datevisit >= CTOD(thisform.TDatB.Text);
and View2.datevisit <= CTOD(thisform.TDatE.Text)
Рис.
11. Форма
диалога при выборке по интервалу дат
10.5. Выборка по нескольким параметрам
Рассмотрим пример поиска по нескольким параметрам. В окне диалога, рис. 12, пользователем вводятся несколько параметров, например группа риска пациента и дата приема, и при нажатии кнопки Ok выполняется следующий запрос:
SELECT Patienttab.namept, Patienttab.patrpt, Patienttab.surnpt,;
Patienttab.addresspt, Patienttab.telephone, Patienttab.groupb;
FROM patienttab;
where thisform.CombGrR.value= Patienttab.grouprisk
and View2.datevisit = CTOD(thisform.DatT.Text)
Рис. 12. Форма диалога при выборке по нескольким параметрам
