Слайд 2Компоненты для работы с базами данных
Обзор невизуальных компонентов для работы
с базами данных
Слайд 3TDataSource
Служит промежуточным звеном в цепочке "Набор данных - TDataSource -
Визуальные компоненты для работы с данными". Позволяет устанавливать некоторые параметры
НД, устанавливать состояние НД, отслеживать изменения в НД.
Слайд 4TTable
Реализует набор данных, источником данных для которого является одна таблица
БД. Содержит множество методов, свойств и событий, посредством которых можно
выполнять над НД богатый спектр операций. Многие из них расширяют множество свойств, методов и событий, определенных в предках Ttable.
Слайд 5Состав записей зависит от того, производится ли в TTable фильтрация
по какому-либо условию.
Если нет, то в TTable будут представлены
все записи ТБД, ассоциированной с данной TTable; если да, то в TTable попадут только записи, удовлетворяющие условию фильтрации.
Слайд 6Псевдоним БД указывается в свойстве DatabaseName,
имя ассоциированной ТБД -
в свойстве TableName.
Слайд 7НД могут находиться в одном из состояний:
Dslnactive НД закрыт.
dsBrowse
Состояние по умолчанию для открытого НД. Показывает, что записи
просматриваются., но в данный момент не изменяются.
dsEdit НД находится в состоянии редактирования текущей записи (после явно или неявно вызванного метода Edit).
Слайд 8Dslnsert НД находится в состоянии добавления новой записи (после
явно или неявно вызванного метода Insert или Append).
dsSetKey НД
находится в состоянии поиска записи по критерию, заданному методами FindKey, GotoKey, FindNearest или GotoNearest. По окончании поиска НД переходит в состояние dsBrowse.
Слайд 9Рассмотрим методы, которые могут переводить БД из одного состояния в
другое.
Слайд 10 Inactive—>dsBrowse НД во время выполнения программы можно открыть методами
Table. Open,
Во время разработки и во время выполнения НД можно
открыть, установив в True свойства Table. Active
Слайд 11dsBrowse—>Inactive НД во время выполнения программы можно закрыть методами Table.
Close.
Во время разработки и во время выполнения НД можно
закрыть, установив в False свойства Table.Active.
Слайд 12dsBrowse—>dsEdit Перевести НД в режим редактирования можно методом Edit. После
этого значения полей текущей записи можно изменять.
Слайд 13dsEdit—> dsBrowse Метод Post приводит к запоминанию измененной записи в
НД. Метод Cancel отменяет изменения, сделанные в полях записи. Запись
не запоминается в НД.
Слайд 14• dslnsert—> dsBrowse Метод Post добавляет новую запись в НД.
Если НД не находится в режиме dslnsert, возбуждается исключительная ситуация.
Метод Cancel отменяет добавление новой записи в НД. Содержимое полей, назначенных новой записи, теряется.
Слайд 15dsBrowse—>dsSetKey НД находится в данном состоянии, когда осуществляется поиск записи,
удовлетворяющей условию, установленному методом SetKey (и затем, возможно, измененному методом
EditKey).
Поиск записи производится одним из следующих методов: GoToKey, GoToNearest, FindKey, FindNearest. В случае успешного или неуспешного завершения метода поиска, НД переводится в состояние dsBrowse.
Слайд 16Получить текущее состояние НД можно, используя метод State.
Он возвращает следующие
константы: dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey.
Слайд 17Пример
IF Tablel.State = dslnactive THEN Table1.Active := True;
Слайд 18Реакция на изменение состояния набора данных.
Событие OnStateChange (компонент DataSource) наступает
всякий раз при изменении состояния НД. Следующий пример показывает, как
отобразить на экране (в компоненте Label 1) сообщение о текущем состоянии НД:
Слайд 19procedure TForm1.DataSource1StateChange(Sender: TObject);
var S : String;
begin
CASE Table1.State OF
dsInactive: S:= 'He
активна' ;
dsBrowse: S:= 'Просмотр' ;
dsEdit: S:= 'Редактирование';
dsInsert: S:= 'Вставка';
dsSetKey: S:=
'Установка ключа' ;
dsCalcFields: S:= 'Вычисляемое поле' ;
END; {case}
Label1.Caption := S;
end;
Слайд 20Свойства некоторых компонентов, в первую очередь Enabled, могут зависеть от
состояния НД. Например, если кнопка Button 1 должна быть доступной
для нажатия только в режиме dslnsert, допустим такой код:
Слайд 21procedure TFormI.DataSourcelStateChange(Sender: Tobject) ;
begin
Button1.Enabled := (Tablel.State = dslnsert);
end;