Глава 5: За данными набора данных...
Статус первого раздела данных
При разработке приложений баз данных с помощью Delphi и ADO большая часть работы уходит на изучение справочной документации для компонента DataSet. . Для создания программы на основе ADO Delphi предоставляет несколько компонентов набора данных: TAdoTable, TAdoQuery и другие компоненты. Они используются для получения, представления и изменения данных из таблиц базы данных или запросов.
В главе 5 этого руководства мы практически рассмотрим, как представлять, просматривать и читать данные, представив некоторые свойства, события и методы большинства интересующих компонентов набора данных.
Выбирайте, устанавливайте, подключайте и получайте
Теперь, когда вы дошли до главы 5, вы должны быть знакомы с шагами, необходимыми для создания формы базы данных. В главе 4 мы вручную создали простую форму просмотра данных. В этой главе он будет использован для продолжения обсуждения.
До сих пор мы использовали только один компонент набора данных (ADO): TAdoTable. Важно понимать, что TADOQuery и TADODataSet (как компоненты набора данных) используют одни и те же настройки для одних и тех же методов и событий.
Открой Сезам; Закрой Сезам (Открой Сезам; Закрой Сезам)
Одной из очень важных особенностей разработки баз данных Delphi является то, что Delphi позволяет нам обрабатывать данные во время разработки программы. Возможно, вы помните — в предыдущей главе мы использовали свойство Active, чтобы открыть активное соединение с данными во время разработки.
Нетрудно понять, что прежде чем приступить к обработке данных таблицы, программа должна сначала открыть набор данных. У Delphi есть два способа достижения этой функциональности. Во-первых, как мы видели, для свойства Active можно установить значение True во время проектирования или выполнения, во-вторых, мы можем вызывать метод Open во время выполнения; Например, добавьте следующий код в обработчик событий OnCreate формы, чтобы получить данные компонента ADOTable.
ADOTable1.Открыть;
Примечание. Каждый набор данных ADO может получить доступ к данным базы данных через свое собственное свойство ConnectionString или компонент ADOConnection (и его ConnectionString). Если компонент ADOTable1 подключен к компоненту ADOConnection1 (этот метод рекомендуется), открытие ADOTable активирует соответствующий компонент ADOConnection. ADOConnection предоставляет два события, которые будут выполнены: OnWillConnect и OnConnectComplete.
Метод Open устанавливает для свойства Active значение True и активирует соединение. Когда мы закончим соединение, мы можем установить для свойства Active значение False или вызвать метод Close для отключения. Обычно мы помещаем вызов метода Close в обработчик события OnClose формы:
ADOTable1.Закрыть;
Прежде чем продолжить, важно знать, что работа с методами и свойствами набора данных зависит от знания текущего состояния данных. Проще говоря, свойство State набора данных определяет, какие действия могут или не могут происходить с набором данных в любой момент времени.
Как дела?
Если набор данных закрыт, состояние данных будет показывать неактивное соединение. Когда соединение закрыто, с данными нельзя выполнять никакие операции, действия или методы. Когда мы впервые открываем соединение с набором данных, набор данных находится в состоянии просмотра по умолчанию. Вы всегда должны знать состояние «ваших» данных. Например, когда мы подключаем набор данных к DBGrid, пользователь может видеть базовый набор данных (или набор записей), но если он хочет изменить некоторые данные, он должен установить для параметра State значение Edit.
Когда программа обрабатывает данные, важно понимать, что состояние набора данных постоянно меняется. Например, при просмотре данных в DBGrid (состояние «Просмотр») пользователь начинает редактировать записи, и состояние автоматически меняется на «Редактировать». Конечно, это их поведение по умолчанию, когда для свойства AutoEdit элементов управления визуализацией данных (DBGrid, DBEdit) установлено значение True.
Но как нам получить статус? ADOTable (как и любой другой компонент DataSet) не имеет триггеров для обработки изменений состояния.
Что ж, давайте посмотрим: для каждого компонента DataSet мы обычно используем компонент DataSource для визуализации соединения с одним или несколькими элементами управления визуализацией данных. Вот и все.
Каждый компонент источника данных имеет событие OnStateChange, которое срабатывает при каждом изменении состояния базового набора данных. Поместите следующий код в обработчик событий OnStateChange, чтобы отобразить текущее состояние компонента набора данных ADOTable1, используя заголовок формы:
PROcedure TForm1.DataSource1StateChange(Отправитель: TObject);
вар дс: строка ;
начинать
случай ADOTable1.Состояние
dsInactive: ds:='Закрыто';
dsBrowse: ds:='Просмотр';
dsEdit: ds:='Редактирование';
dsInsert: ds:='Вставка новой записи';
еще
ds:='Другие состояния'
конец ;
Caption:='ADOTable1 состояние: ' + ds;
конец ;