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

begin

   if (cdsSubstance.State in [dsEdit, dsInsert]) then begin

       cdsSubstance.Cancel ;

   end;

   if (cdsGroups.State in [dsEdit, dsInsert]) then begin

       cdsGroups.Cancel ;    cdsGroups.Refresh ;

   end;

end;

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

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

  *  Выборка веществ для редактирования,   *

  *  соответствующих выбранной группе.     *

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

begin // Закрываем текущий набор веществ:

    if (cdsSubstance.Active) then cdsSubstance.Close ;

    // Если у текущей группы отсутствуют подгруппы,

    // Открываем набор групп:

    if (NOT hasUndergroups(cdsGroupsGROUP_ID.AsInteger)) and

       (cdsGroupsGROUP_ID.AsInteger > 0) then  begin

          taSubstance.ParamByName('id').AsInteger :=

               cdsGroupsGROUP_ID.AsInteger ;

          cdsSubstance.Open ;

    end;

end;

procedure TDM.cdsSubstanceAfterInsert(DataSet: TDataSet);

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

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

   *  новой записи в таблицу ВЕЩЕСТВ.           *

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

begin cdsSubstanceSUB_ID.AsInteger := 0 ;

  cdsSubstanceGROUP_ID.AsInteger := cdsGroupsGROUP_ID.AsInteger ;

end;

procedure TDM.cdsNH3shBeforeInsert(DataSet: TDataSet);

begin

   // Запомним текущее состояние первичного ключа

   // таблицы перегретых паров NH3

   pSuperh := cdsNH3shP.AsFloat ; tSuperH := cdsNH3shT.AsFloat ;

end;

procedure TDM.cdsNH3shAfterInsert(DataSet: TDataSet);

// Вставка новой записи в таблицу термодинамических

// свойств перегретого пара NH3

begin

  cdsNH3shSUB_ID.AsInteger := Num_Substance ;

  cdsNH3shP.AsFloat := pSuperh ; // Давление - то же

    if tSuperH < 0 then cdsNH3shT.AsFloat := tSuperH +5.0 // t° + 5°

    else cdsNH3shT.AsFloat := tSuperH +10.0 ; // t° + 10°

end;

procedure TDM.cdsNH3_SaturBeforeInsert(DataSet: TDataSet);

begin  // Запомним текущее состояние первичного ключа

       // таблицы насыщенных паров NH3

   tSatur:= cdsNH3_SaturT.AsFloat ;

end;

procedure TDM.cdsNH3_SaturAfterInsert(DataSet: TDataSet);

// Вставка новой записи в таблицу термодинамических

// свойств насыщенного пара NH3

begin  cdsNH3_SaturSUB_ID.AsInteger := Num_Substance ;

       cdsNH3_SaturT.AsFloat := tSatur+1;                end;

END.

Форма модуля даних у текстовому вигляді.

object DM: TDM

  object MyDB: TSQLConnection

    ConnectionName = 'IBConnection'  DriverName = 'Interbase'

    GetDriverFunc = 'getSQLDriverINTERBASE'

    LibraryName = 'dbexpint.dll'     LoginPrompt = False

    Params.Strings = (  'DriverName=Interbase'    

      'Database=C:\Exper_GDB\Propsub.gdb'

      'RoleName=RoleName'    'User_Name=sysdba'

      'Password=masterkey'   'ServerCharSet=WIN1251'

      'SQLDialect=3'         'ErrorResourceFile='

      'LocaleCode=0000'      'BlobSize=-1'

      'CommitRetain=False'   'WaitOnLocks=True'

      'Interbase TransIsolation=ReadCommited'

      'Trim Char=False')

    VendorLib = 'gds32.dll'

  end

  object taGroups: TSQLDataSet

    CommandText =

    'select GROUP_ID, GROUP_NAME, UGROUP_ID

     from GROUPS

     Where ((UGROUP_ID = :pG) and (GROUP_ID <> UGROUP_ID))

     order by GROUP_NAME'

  end

  object quMaxG: TSQLQuery

    SQL.Strings = ( 'Select Max(Group_ID) as MaxG

                     from GROUPS Where (UGROUP_ID= :ug)')

  end

  object quMaxS: TSQLQuery

    SQL.Strings = ( 'Select Max(Sub_ID) as MaxS

                     from SUBSTANCE  Where (GROUP_ID= :gI)')

  end

  object quParentG: TSQLQuery

    SQL.Strings = ( 'Select UGroup_ID from GROUPS

                     Where (GROUP_ID= :ug)')

  end

  object quNamePGroup: TSQLQuery

    SQL.Strings = ( 'Select GROUP_NAME from GROUPS

                     Where (GROUP_ID= :ug)')

  end

  object taSubstance: TSQLDataSet

    CommandText =

      'select SUB_ID, GROUP_ID, S_NAME

       from SUBSTANCE

       where (GROUP_ID =  :id) Order by S_NAME'

  end

  object quLimits: TSQLQuery

    SQL.Strings = (