русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Фильтрация и сортировка данных

Предположим, мы хотим выводить на экран не все записи БД, а лишь удовлетворяющие некоторому условию. Такое действие известно как фильтрация данных. Давайте отобразим только те записи, у которых в поле YEARF хранится значение 2003.

Первый способ – фильтрация на стороне клиента. Делается это так:

WITH DVD DO

BEGIN

Filter:='YEARF=2003';

Filtered:=True;

Filtered:=False

END;

В свойство Filter в виде текстовой строки записывается логическое выражение для отбора записей. Свойство Filtered логического типа включает/выключает фильтрацию.

А как отследить ситуацию, когда в БД нет записей, удовлетворяющих заданному условию? Очень просто:

WITH DVD DO

BEGIN

Filter:='YEARF=2003';

Filtered:=True;

IF BOF AND EOF THEN

MessageDlg('Ничего не найдено',

mtInformation,[mOK],0);

Filtered:=False

END;

Если свойства BOF (начало БД) и EOF (конец БД) одновременно истинны, это значит, что база пуста.

Второй способ – "на ходу" изменить SQL-запрос и заставить сервер прислать новую выборку данных. Делается это так:

VAR oldSQL:STRING;

BEGIN

WITH DVD DO

BEGIN

oldSQL:=SQL[0];

Close;

SQL[0]:='SELECT * FROM DVD WHERE YEARF=2003';

Prepare;

Open;

{ снятие фильтра }

Close;

SQL[0]:=oldSQL;

Prepare;

Open

END;

В переменную oldSQL запоминается текущий SQL-запрос, он хранится в свойстве SQL. Поскольку свойство SQL– это массив строк, мы обращается к его первому элементу с индексом 0. Запрос закрывается, меняется текст SQL-выражения, а затем он снова открывается. Для снятия фильтрации нужно восстановить старый запрос, хранящийся в переменной oldSQL.

Очень важно, что SQL-выражение можно динамически создавать как текстовую строку. Например, пусть пользователь вводит год с клавиатуры при помощи поля ввода Edit1:

SQL[0]:='SELECT * FROM DVD WHERE '+ 'YEARF='+Form1.Edit1.Text;

Сортировка данных очень часто применятся в БД. Проще всего она делается на стороне серверасредствами SQLпри помощи конструкции ORDER BY. Давайте отсортируем БД по русским названиям (поле TITLE_RUSSIAN):

VAR oldSQL:STRING;

BEGIN

WITH DVD DO

BEGIN

oldSQL:=SQL[0];

Close;

SQL[0]:='SELECT * FROM DVD ORDER BY TITLE_RUSSIAN';

Prepare;

Open;

{ снятие сортировки }

Close;

SQL[0]:=oldSQL;

Prepare;

Open

END;

Просмотров: 703


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.