русс | укр

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

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

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

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


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

Программный доступ к полям БД

Во многих случаях БД можно и не выводить на экран, но нужно искать в ней информацию, изменять данные, добавлять и удалять записи и т.д. Как это сделать?

Если БД вообще не выводится на экран, компонент DataSource не нужен. Достаточно компонента Query. Научимся выбирать требуемую запись в БД и обращаться к отдельным полям.

Возможны два способа выполнения поиска, сортировки и пр. операций: на стороне клиента и на стороне сервера. В первом случае всю работу выполняет компьютер клиента, а сервер "знать не знает" про ваши поиски. Во втором случае на сервер просто направляется SQL-запрос на поиск (скажем, команда SELECT с условием WHERE) и собственно поиск осуществляется сервером.

Поиск записи по условию на стороне клиента выполняет метод Locate объекта Query. Вот его общий вид:

LOCATE(список_полей, массив_значений, [режимы])

В списке полей их имена разделяются символом ";". Пусть мы хотим найти первую запись в БД dvd.db, у которой в поле YEARF хранится значение 2003. Поместите на форму кнопку и в ее обработчике события OnClick напишите следующий код:

BEGIN

dm.DVD.Locate('YEARF','2003',[])

END;

Разумеется, искомое значение можно вводить как переменную. Например, можно запросить год с клавиатуры. Параметр "режим" представляет собой множество, в которое могут быть включены следующие константы:

loCaseInsensitive – поиск текста без учета регистра;

loPartialKey – поиск по части выражения. Если начало текста в поле БД совпадает с выражением, считается, что запись найдена.

Если режим поиска менять не нужно, все равно следует написать пустое множество – [].

Если надо выполнять поиск по нескольким полям, придется использовать один трюк. Давайте найдем все фильмы с субтитрами, выпущенные в 2002г. Команда поиска будет иметь вид:

dm.DVD.Locate('YEARF;SUBTITLES',VarArrayOf(['2003',TRUE]),[])

Функция VarArrayOf объединяет свои аргументы различного типа в псевдо-массив.

Метод Locateвозвращает значение True или False в зависимости от того, найдена запись или нет:

IF NOT(dm.DVD.Locate('YEARF;SUBTITLES',

VarArrayOf(['2003',TRUE]),[])) THEN

MessageDlg('Не найдено',mtInformation,[mbOK],0);

Итак, нужная строчка найдена. Чтобы получить значение конкретного поля в текущей строке БД, можно воспользоваться методом FieldByName:

VAR s:STRING;

BEGIN

dm.DVD.Locate('YEARF','2003',[]);

s:=dm.DVD.FieldByName('TITLE_RUSSIAN').AsString

END;

В приведенном примере в переменную s записывается значение поля TITLE_RUSSIAN. Обратите внимание на конструкцию AsString. При использовании метода FieldByName необходимо явно указывать тип значения, извлекаемого из поля. Основные варианты таковы:

AsFloat – вещественное число;

AsInteger – целое число;

AsBoolean – логическое значение;

AsString – текстовая строка.

Занесение значения в поле выполняется несколько сложнее. Во-первых, у компонента Query свойство RequestLive должно быть установлено в True. Во-вторых, перед изменением поля нужно вызывать метод Edit, а после изменения – метод Post:

WITH dm.DVD DO

BEGIN

Edit;

FieldByName('TITLE_RUSSIAN').AsString:='Терминатор 2';

Post

END;

Между Edit и Post можно менять содержимое нескольких полей сразу.

Еще несколько полезных методов:

Append – добавляет новую записи в конец БД, делает ее текущей и переводит БД в режим редактирования.

Delete – удаляет текущую запись из базы.

EmptyTable – страшный метод. Удаляет все строки из БД.

Предположим, нам нужно подсчитать количество фильмов в БД, выпущенных в 2001г. Организуем цикл по всем записям:

USES …., DB;

VAR cnt:WORD; b:TBookMark;

BEGIN

CNT:=0;

WITH dm.DVD DO

BEGIN

DisableControls;

b:=GetBookMark;

First;

WHILE NOT(EOF) DO

BEGIN

IF FieldByName('YEARF').AsString='2001' THEN

INC(cnt);

Next

END;

GotoBookMark(b);

EnableControls

END;

В USES надо вручную добавить модуль DB. Метод DisableControls временно отключает БД от ее отображения на экране. Если этого не сделать, то при выполнении цикла курсор в DBGrid начнет "бегать", что не только странно выглядит, но и заметно тормозит работу. Самое главное – не забыть в конце включить отображение БД методом EnableControls.

Перед началом цикла в переменную b при помощи метода GetBookMark запоминается текущая запись. После окончания цикла метод GotoBookMark снова делает текущей. Запись хранится в переменной типа BookMark.

Методы для перемещения по записям БД следующие:

First – на первую запись;

Last – на последнюю запись;

Next – на следующую запись;

Prior – на предыдущую запись.

Свойство EOF возвращает логическое значение в зависимости от того, достигнута последняя запись в БД или нет.

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


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



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


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

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

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


 


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

 
 

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