Невизуальные компоненты предназначены для организации доступа к данным, содержащимся в таблицах. Они представляют собой промежуточное звено между данными таблиц БД и визуальными компонентами.
Страница Data Access (Доступ к данным) – находятся невизуальные компоненты, предназначенные для организации доступа к данным:
- DataSource – источник данных,
Страница BDE – содержит компоненты, предназначенные для управления данными с использованием BDE:
Table – набор данных, основанный на таблице БД,
Query – набор данных, основанный на SQL-запросе,
StoredProc – вызов хранимой процедуры сервера,
DataBase – соединение с БД,
UpdateSQL – изменение набора данных, основанного на SQL-запросе или хранимой процедуре,
Компонент Database
Компонент Database служит для соединения с БД. Компонент Database можно использовать для локальных и для удаленных БД.
Основные свойства компонента:
- SessionName – указывает компонент сеанса Session, с которым связан компонент Database. Если значение этого свойства не задано, то для сеанса создается динамический объект типа TSession (объект по умолчанию).
|
|
- AliasName – указывает псевдоним БД.
- DatabaseName – задает имя БД, используемое в приложении для соединения с БД.
- Params – определяет параметры соединения (например Langdriver). С помощью этого свойства нужно устанавливать (переустанавливать) только те параметры, значения которых не устраивают разработчика.
- LoginPrompt типа Boolean управляет режимом отображения окна ввода имени пользователя и пароля. По умолчанию свойство имеет значение True, и окно появляется при пером соединении с БД. Если установить свойство в значение False, то запрос на идентификацию пользователя не выдается, и его и пароль должны быть указаны в параметрах соединения (свойство Params).
- Connected типа Boolean определяет, установлено ли соединение с БД.
Наборы данных
Таблицы БД располагаются на диске и являются физическими объектами. Для операций с данными, содержащимися в таблицах, используются наборы данных. В терминах системы Delphi набор данных представляет собой совокупность записей, взятых из одной или нескольких таблиц БД. Записи, входящие в набор данных, отбираются по определенным правилам, при этом в частных случаях набор данных может включать в себя все записи из связанной с ним таблицы или не содержать ни одной записи.
В Delphi для работы с наборами данных при использовании механизма BDE служат такие компоненты, как Table, Query, UpdateSQL, DecisionQuery или StoredProc.
Схожие свойства компонентов Table и Query:
- DatabaseName – имя каталога, в котором находится БД (файлы ее таблиц), или псевдоним, ссылающийся на этот каталог.
- Active – типа Boolean, указывает на состояние набора данных (открыт\закрыт). Если свойство имеет значение False (по умолчанию), то набор данных закрыт и его связь с БД разорвана. Если по каким-либо причинам открыть набор даны невозможно (неправильное значение свойства TableName или SQL), то свойство сохраняет значение False.
|
|
- RecordCount - позволяет узнать общее количество записей в наборе данных. Это свойство доступно для чтения при выполнении приложения.
- RecNo - указывает на номер текущей записи в наборе данных. Изменяется при сортировке или фильтрации
- ReadOnly - простой способ сделать вашу таблицу доступной только для чтения.
Методы наборов данных:
- Open(Close) – процедура открывает (закрывает) набор данных, ее вызов эквивалентен установке свойства Active в значение True (False).
- Post - сохраняет внесенные изменения.
События наборов данных:
- BeforeOpen – возникает непосредственно перед открытием набора данных. В обработчике этого события можно выполнить проверку определенных условий, и если они не соблюдаются, то открытие набора данных может быть запрещено.
- AfterOpen – генерируется сразу после открытия набора данных. Это событие можно использовать, например, для выдачи пользователю сообщения о возможности работы с данными.
- BeforeClose – генерируются непосредственно перед закрытием набора данных. Можно использовать для принудительного сохранения изменений перед закрытием набора данных.
Например, вызовом метода Post:
procedure TForm1.Table1BeforeClose (DataSet: TDataSet);
begin
if (Table1.State = dsEdit) or (Table1.State = dsInsert) then Table1.Post;
end;
т.е. если набор данных Table1 находится в режиме редактирования или вставки, то перед его закрытием внесенные изменения сохраняются.