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