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 = (
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.