Методичні вказівки до обов’язкового домашнього завдання з дисципліни «Організація баз даних та знань», страница 6

    ds: TDataSource;

    //---------------------------------------------

    procedure DataModuleCreate(Sender: TObject);

    procedure cdsGroupsAfterPost(DataSet: TDataSet);

    procedure cdsGroupsAfterInsert(DataSet: TDataSet);

procedure dsGroupsDataChange(Sender: TObject; Field: TField);

    procedure cdsSubstanceAfterInsert(DataSet: TDataSet);

    procedure cdsNH3shAfterInsert(DataSet: TDataSet);

    procedure cdsNH3_SaturAfterInsert(DataSet: TDataSet);

    procedure cdsNH3shBeforeInsert(DataSet: TDataSet);

    procedure cdsNH3_SaturBeforeInsert(DataSet: TDataSet);

  private    { Private declarations }

    pSuperh, tSuperH, tSatur :Extended ;

  public     { Public declarations }

    p_Group_Code :Integer ;  // Код родительской группы

    Num_Substance :Integer ; // Код вещества

    name_Substance :String ; // Наименование вещества

    Function hasUndergroups(gr :Integer) :Boolean ;

    Function hasSubstanses(gr :Integer) :Boolean ;

    Function NumParent(gr :Integer) :Integer ;

    Function NameParent(gr :Integer) :String ; // Имя родительской группы

    Procedure GrSubStable ; // Стабилизация данных

  end;

var  DM: TDM;

implementation

{$R *.dfm}

procedure TDM.DataModuleCreate(Sender: TObject);

begin

    // По умолчанию начинаем просмотр групп с корневой записи:

    p_Group_Code := 1 ;

    Num_Substance := 0 ; // По умолчанию вещество НЕ выбрано

    name_Substance := 'Вещество НЕ выбрано!';

end;

procedure TDM.cdsGroupsAfterPost(DataSet: TDataSet);

{ ****************************************************

  *  Отправка результатов редактирования на сервер.  *

  **************************************************** }

begin (DataSet as TClientDataSet).ApplyUpdates(0) ; end;

procedure TDM.cdsGroupsAfterInsert(DataSet: TDataSet);

{  **********************************************

   *  Значения полей по умолчанию при вставке   *

   *  новой записи в таблицу ГРУПП.             *

   **********************************************   }

begin cdsGroupsGROUP_ID.AsInteger := 0 ; // первичному ключу

      cdsGroupsUGROUP_ID.AsInteger := p_Group_Code ; // внешнему

end;

Function TDM.hasUndergroups(gr :Integer) :Boolean ;

{ ********************************************

  *  Имеются ли подгруппы в данной группе ?  *

  ******************************************** }

begin //Подаем на вход номер группы:

   quMaxG.ParamByName('ug').AsInteger := gr;

   quMaxG.Open ; // Открываем запрос

   // Если он пуст, то подгруппы НЕ существует:

      if (quMaxG.FieldByName('MaxG').IsNull ) then

           Result := false

      else Result := true;

   quMaxG.Close ;

end;

Function TDM.hasSubstanses(gr :Integer) :Boolean ;

{ *****************************************************

  *  Имеются ли вещества в данной группе/подгруппе ?  *

  ***************************************************** }

begin // Подаем на вход номер группы:

   quMaxS.ParamByName('gI').AsInteger := gr;

   quMaxS.Open ; // Открываем запрос

   // Если он пуст, то подгруппы НЕ существует:

      if (quMaxS.FieldByName('MaxS').IsNull ) then

           Result := false

      else Result := true;

   quMaxS.Close ;

end;

Function TDM.NumParent(gr :Integer) :Integer ;

{*********************************************************

  *Возвращает номер родительской группы текущей подгруппы.*

   *********************************************************}

begin quParentG.ParamByName('ug').AsInteger := gr;

   quParentG.Open ;

     Result := quParentG.FieldByName('UGroup_ID').AsInteger ;

   quParentG.Close ;

end;

Function TDM.NameParent(gr :Integer) :String ;

{ *********************************************

  *  Возвращает имя группы с текущим номером. *

  ********************************************* }

begin quNamePGroup.ParamByName('ug').AsInteger := gr;

   quNamePGroup.Open ;

     Result := quNamePGroup.FieldByName('GROUP_NAME').AsString ;

   quNamePGroup.Close ;

end;

Procedure TDM.GrSubStable ;

{ ***********************************************

  *  Стабилизация данных по группам и веществам *

  *********************************************** }