Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка№6 21.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

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. Форма диалога при выборке по нескольким параметрам