Разработка баз данных в Delphi. 11 Уроков



         

 Использование TDataSource для проверки состояния БД:


          TDataSource имеет три ключевых события, связанных с состоянием БД

OnDataChange

OnStateChange

OnUpdateData

OnDataChange происходит всякий раз, когда Вы  переходите на новую запись, или состояние DataSet сменилось с dsInactive на другое, или начато редактирование. Другими словами, если Вы вызываете Next, Previous, Insert, или любой другой запрос, который должен привести к изменению данных, связанных с текущей записью, то произойдет событие OnDataChange. Если в программе нужно определить момент, когда происходит переход на другую запись, то это можно сделать в обработчике события OnDataChange:

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);

begin

   if DataSource1.DataSet.State = dsBrowse then begin

     DoSomething; 

   end;

end;

          Событие OnStateChange событие происходит всякий раз, когда изменяется текущее состояние DataSet. DataSet всегда знает, в каком состоянии он находится. Если Вы вызываете Edit, Append или Insert, то TTable знает, что он теперь находится в режиме редактирования (dsEdit или dsInsert). Аналогично, после того, как Вы делаете Post, то TTable знает что данные больше не редактируется, и переключается обратно в режим просмотра (dsBrowse).

          Dataset имеет шесть различных возможных состояний, каждое из которых включено в следующем перечисляемом типе:

TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert,

                 dsSetKey, dsCalcFields);

В течение обычного сеанса работы, БД часто меняет свое состояние между Browse, Edit, Insert и другими режимами. Если Вы хотите отслеживать эти изменения, то Вы можете реагировать на них написав примерно такой код:

procedure TForm1.DataSource1StateChange(Sender: TObject);

var

  S: String;

begin

  case Table1.State of

    dsInactive: S := 'Inactive';

    dsBrowse: S := 'Browse';

    dsEdit: S := 'Edit';

    dsInsert: S := 'Insert';

    dsSetKey: S := 'SetKey';

    dsCalcFields: S := 'CalcFields';




Содержание  Назад  Вперед