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

   // Если текущая группа НЕ содержит веществ

   If (NOT DM.hasSubstanses(DM.cdsGroupsGROUP_ID.AsInteger))

   then begin

      // Текущая запись становится родительской:

      DM.p_Group_Code := DM.cdsGroupsGROUP_ID.AsInteger ;

      paInd.Caption := DM.cdsGroupsGROUP_NAME.AsString ;

      // Закрываем набор данных, если он открыт:

         if DM.cdsGroups.Active then DM.cdsGroups.Close ;

      // Выборка подгрупп по коду родительской группы:

      DM.taGroups.ParamByName('pG').AsInteger := DM.p_Group_Code ;

      DM.cdsGroups.Open ;

   End;

end;

procedure TfmGrSub.bbRootClick(Sender: TObject);

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

  *   Переход к первому уровню иерархии групп.    *

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

begin

   // Текущая запись становится родительской:

   DM.p_Group_Code := 1 ;

   paInd.Caption := 'Свойства веществ' ;

   // Закрываем набор данных, если он открыт:

      if DM.cdsGroups.Active then DM.cdsGroups.Close ;

   DM.taGroups.ParamByName('pG').AsInteger:= DM.p_Group_Code;

   DM.cdsGroups.Open ;

end;

procedure TfmGrSub.bTestClick(Sender: TObject);

begin // кнопка для ТЕСТИРОВАНИЯ процедур

    if DM.hasSubstanses(DM.cdsGroupsGROUP_ID.AsInteger) then

       Showmessage('Вещества имеются!')

    else Showmessage('Веществ НЕТУ!')

end;

procedure TfmGrSub.bbUpClick(Sender: TObject);

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

  *   Переход к родительской группе (на уровень вверх).    *

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

begin

   // Определяем номер родительской записи:

   DM.p_Group_Code := DM.NumParent(DM.cdsGroupsUGROUP_ID.AsInteger) ;

   // Индикация имени родительской группы:

   paInd.Caption := DM.NameParent(DM.p_Group_Code) ;

   // Закрываем набор данных, если он открыт:

      if DM.cdsGroups.Active then DM.cdsGroups.Close ;

   // Выборка подгрупп по коду родительской группы:

   DM.taGroups.ParamByName('pG').AsInteger:= DM.p_Group_Code;

   DM.cdsGroups.Open ;

end;

Function TfmGrSub.ChoiceSubstance :Boolean;

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

 *  Выбор вещества. Результат записывается в переменные,   *

 *  Находящиеся в модуле данных.                           *

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

begin

   Result := false;

   bbOK.Visible := True ;  bbCancel.Visible := True ;

   // Запустим форму в модальном режиме

   // и контролируем нажатие кнопки выбора:

     If (ShowModal = mrOk) then

        If ( NOT DM.cdsSubstanceSUB_ID.IsNull ) then

           if ( DM.cdsSubstanceSUB_ID.AsInteger > 0) then

           begin

              DM.Num_Substance :=

                            DM.cdsSubstanceSUB_ID.AsInteger ;

              DM.name_Substance :=

                            DM.cdsSubstanceS_NAME.AsString ;

              Result := True ;

           end;

   bbOK.Visible := False ;  bbCancel.Visible := false ;

end;

function RusValToEng(s: String): string;

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

    **  Преобразует число в виде строки   **

    **  из русского формата в английкий.  **

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

var pp:integer;

begin

  Result:=s;

  pp:=Pos(',', s); //определяет позицию запятой в строке

  //если позиция меньше 0 то запятой присваивается точка:

    if (pp>0) then Result[pp]:='.';

end;

Function GetReal(s:String) :Extended;

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

   **  Преобразует строку в вещесвенное число.  **

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

begin

// преобразовует строку из русского в английский

// заменяя запятую на точку

   s:=RusValToEng(s);

   Val(s,Result,Code);

      if Code <> 0 then Result := 0;

end;

function CheckReal(ed: TEdit):Boolean;

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

   **  Проверяет строку на возможность             **

   **  преобразования в вещественное число.        **

   **  Возвращает true в случае отсутствия ошибок. **

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