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

       For i := 1 to AN do sgRes.Cells[0,i] := st[i] ;

    // Пределы поиска по умолчанию:

    minPW := 0       ;  maxPW := 0 ;

    minT := ABS_NULL ;  maxT := ABS_NULL ;

end;

procedure TfmCalcNH3Satur.bbChooseClick(Sender: TObject);

begin

   if fmGrSub.ChoiceSubstance then begin

      paInd.Caption := DM.name_Substance ;

      GetLimits ; //  Определяем границы поиска

   end;

end;

Procedure TfmCalcNH3Satur.GetLimits;

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

   **  Определяет область определения   **

   **  таблицы, если выбран хладагент:  **

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

begin

    if DM.Num_Substance > 0 then begin

       DM.quLimits.ParamByName('id').AsInteger :=

                                           DM.Num_Substance ;

       DM.quLimits.Open ;

         if DM.quLimits.FieldByName('minT').IsNull then begin

             minPW := 0 ; maxPW := 0 ;

             minT := ABS_NULL ;  maxT := ABS_NULL ;

         end

         else begin

            minT := DM.quLimits.FieldByName('minT').AsFloat ;

            maxT := DM.quLimits.FieldByName('maxT').AsFloat ;

           minPW := DM.quLimits.FieldByName('minPW').AsFloat;

           maxPW := DM.quLimits.FieldByName('maxPW').AsFloat;

         end;

       DM.quLimits.Close ;

    end;

end;

Function TfmCalcNH3Satur.isTInLimits(t :Extended) :Boolean;

begin

 if (t >= minT) and (t <= maxT) then Result := true

 else begin

   ShowMessage ('Значение температуры находится вне

                 интервала поиска '+

   FloatToStr(minT)+' ... '+ FloatToStr(maxT)+' !') ;

   Result := false ;

 end;

end;

Function TfmCalcNH3Satur.isPwInLimits(p :Extended) :Boolean;

begin

 if (p >= minPw) and (p <= maxPw) then Result := true

 else begin

   ShowMessage ('Значение давления находится вне

                интервала поиска '+

   FloatToStr(minPw)+' ... '+ FloatToStr(maxPw)+' !') ;

   Result := false ;

 end;

end;

Function TfmCalcNH3Satur.GetVars(qu :TSQLQuery) :Boolean ;

var i,j :Integer ;

begin

   Result := true;

   qu.Open ; qu.First ; // Откроем запрос

     IF (not qu.Eof) then

        For i := 1 to 2 do begin

           // результаты запроса передадим в массив:

           for j := 1 to AN do iP[j][i]  :=

                                       qu.Fields[j].AsFloat ;

           qu.Next ;

        End

     Else begin

       Result := false ;  ShowMessage('КОНЕЦ НАБОРА !!');

     end;

   qu.Close ;

end;

procedure TfmCalcNH3Satur.bbSearchTClick(Sender: TObject);

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

  ** Поиск данных по температуре жидкости  **

  ** (на левой пограничной кривой).        **

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

Var i :Integer;

begin

   t := GetReal(edT.Text) ;

   IF  isTInLimits(t) then BEGIN

      DM.quIntT.ParamByName('id1').AsInteger :=

                                           DM.Num_Substance ;

      DM.quIntT.ParamByName('t1').AsFloat    := t ;

      DM.quIntT.ParamByName('id2').AsInteger :=  

                                           DM.Num_Substance ;

      DM.quIntT.ParamByName('t2').AsFloat    := t ;

         if GetVars(DM.quIntT) then begin

             if (ip[1][1]=ip[1][2]) then

                for i := 1 to AN do iP[i][3] := iP[i][1]

             else

                for i := 1 to AN do

                   iP[i][3] := iP[i][1]+

                   (iP[i][2] - iP[i][1])/(ip[1][2]-ip[1][1])*

                   (t-ip[1][1]) ;

         end;

      ShowNumbers ;

   END;

end;

procedure TfmCalcNH3Satur.edTExit(Sender: TObject);

begin   CheckReal(Sender as TEdit) ; end;

procedure TfmCalcNH3Satur.bbSearchPwClick(Sender: TObject);

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

   ** Поиск данных по давлению пара      **

   ** (на правой пограничной кривой).    **

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

var i :Integer;

begin

   p := GetReal(edP.Text) ;

   IF  isPwInLimits(p) then BEGIN

      DM.quIntPW.ParamByName('id1').AsInteger :=  

                                           DM.Num_Substance ;

      DM.quIntPW.ParamByName('p1').AsFloat    := p ;