
- •24. Компоненты для работы с таблицами базы данных
- •25.Основные особенности и использование компонента Query
- •26. Построение статических и динамических запросов
- •27. Состояния набора данных. Методы изменения данных.
- •28. Доступ к данным.
- •29. Навигация по набору данных.
- •30.Поиск записей в наборах данных
27. Состояния набора данных. Методы изменения данных.
Набор данных в любой момент времени находится в некотором состоянии, т. е. подготовлен к выполнению действий строго определенного рода. И для каждой группы операций набор данных выполняет ряд подготовительных действий.
Все состояния набора данных делятся на две группы.
К первой группе относятся состояния, в которые набор данных переходит автоматически, а также непродолжительные по времени состояния, сопровождающие функционирование полей набора данных
Во вторую группу входят состояния, которыми можно управлять из приложения, например, перевод набора данных в режим редактирования
Базовый класс TDataSet, инкапсулирующий свойства набора данных, позволяет изменять состояние, а также проверять текущее состояние набора данных.
Текущее состояние набора данных передается в свойство state, имеющее тип TDataSetState:
type TDataSetState = (dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc);
Для изменения данных используются специальные запросы: INSERT, UPDATE, DELETE.
Пример запроса для удаления записи:
DELETE FROM country WHERE Name='Argentina';
28. Доступ к данным.
Компоненты для доступа к данным, реализующие:
– доступ через процессор баз данных BDE, используя ODBC-
драйверы или внутренние драйверы BDE;
- доступ через ADO-объекты, в основе которого лежит применение
технологии OLE DB;
– доступ к локальному или удалённому SQL-серверу InterBase;
– доступ посредством драйверов dbExpress;
– доступ к БД при многозвенной архитектуре (компоненты страницы
DataSnap);
С помощью него мы работали
Класс TADOConnection обеспечивает соединение с данными, доступ к
которым реализуется через ADO-объекты. Компоненты ADOConnection ис-
пользуют для доступа к данным OLE DB-провайдеры.
Компоненты ADOCommand и ADODataSet связываются с источником
данных посредством объекта ADOConnection, указывая ссылку на него как
значение свойства Connection.
Для идентификации соединения необходимо определить значение свой-
ства ConnectionString (строка соединения) компонента ADOConnection,
которое может основываться на указании datalink-файла или строки соедине-
ния. Если в качестве значения свойства ConnectionString указано имя
datalink-файла, то настройку соединения можно выполнять автономно от при-
ложения (например, указывая имя базы данных Microsoft SQL Server на теку-
щем ПК).
29. Навигация по набору данных.
Навигация по набору данных состоит в том, что выбирается указатель на ту или иную запись в таблице БД. Этот указатель так же называется курсором и определяет запись, с которой будут производиться операции в данный момент.
Мы уже рассматривали навигацию при помощи специального компонента - DBNavigator. Теперь рассмотрим, как можно осуществлять ее программным способом, обращаясь непосредственно к методам набора данных.
Для перемещения указателя текущей записи можно использовать следующие процедуры набора данных:
First - устанавливает указатель на первую запись;
Next - устанавливает указатель на запись, следующую за текущей;
Last - устанавливает указатель на последнюю запись;
Prior - устанавливает указатель на запись, предшествующую за текущей;
Для перемещения на несколько записей сразу используют функцию MoveBy - она принимает в качестве аргумента число, на которое должно произойти перемещение, а возвращает число записей, на которое реально переместился курсор (разница может быть вызвана, например тем, что конец набора данных был достигнут "досрочно"). Перемещение при помощи этой функции можно производить в обоих направлениях:
Table1.MoveBy(10); //перемещение указателя на 10 записей вперед Table1.MoveBy(-3); //перемещение указателя на 3 записи назад x:=Table1.MoveBy(y); //использование возвращаемого значения if x<>y then Caption:='Перемещено только на '+IntToStr(x)+' записей';
При перемещении указателя учитывается текущее состояние набора данных, т.е. порядок сортировки и ограничения, наложенные фильтрами.