Procedura-GetIDsForExpression

Parametry:

NázevPopisDatový typ
AExpressionVarChar(4096)
ADateFromFloat(0, 0)
ADateToFloat(0, 0)
ACaseSensitiveChar(1)

Návratové hodnoty:

NázevPopisDatový typ
Expr_IDChar(10)
Chart_IDChar(10)

Závislosti:

NázevPopisTřída
GetCalcExpressionsByDateProcedures
GetSystemIDsForExpressionProcedures
ManageUpperProcedures

Tělo:

begin
  if (:ACaseSensitive = 'N') then
    AExpression = Upper(:AExpression Collate PXW_CSY);
  if ((ADateFrom <> 0) and (ADateTo <> 0)) then begin
    for
      select Expr_ID, Chart_ID 
        from GetSystemIDsForExpression(:AExpression, :ADateFrom, :ADateTo, :ACaseSensitive)
      into :Expr_ID, :Chart_ID
    do begin
      suspend;
    end 
    for 
      select CE.ID, CC.ID
        from CalcUserExpressions CUE
        left join CalcExpressions CE on CE.ID = CUE.Parent_ID
        left join CalcCharts CC on CC.ID = CE.Parent_ID
        where
          CE.ID in (select ID from
                    GetCalcExpressionsByDate(CE.Parent_ID, :ADateFrom, :ADateTo)
                  ) and        
          (CE.id not in (select Expr_ID 
                           from GetSystemIDsForExpression(:AExpression, :ADateFrom, :ADateTo, :ACaseSensitive)
                         )
          ) and
          (
            ((select outExpr from 
              ManageUpperForBlob(CUE.UserExpression, :ACaseSensitive)) like '%' || :AExpression || '%' ESCAPE '~') or
            ((select outExpr from 
              ManageUpperForBlob(CUE.UserCondition, :ACaseSensitive)) like '%' || :AExpression || '%' ESCAPE '~') or
           ((select outExpr from 
              ManageUpperForBlob(CUE.UserCheckExpression, :ACaseSensitive)) like '%' || :AExpression || '%' ESCAPE '~')
          )    
      into :Expr_ID, :Chart_ID           
    do begin
      suspend;
    end          
  end else begin
    /* Pokud není zadáno časové omezení, nebereme ohled na období platnosti výrazu. */
    for
      select Expr_ID, Chart_ID 
        from GetSystemIDsForExpression(:AExpression, 0, 0, :ACaseSensitive)
      into :Expr_ID, :Chart_ID
    do begin
      suspend;
    end
    /*  */
    for 
      select CE.ID, CC.ID
        from CalcUserExpressions CUE
        left join CalcExpressions CE on CE.ID = CUE.Parent_ID
        left join CalcCharts CC on CC.ID = CE.Parent_ID
        where
          (
            ((select outExpr from 
              ManageUpperForBlob(CUE.UserExpression, :ACaseSensitive)) like '%' || :AExpression || '%' ESCAPE '~') 
            or
            ((select outExpr from 
              ManageUpperForBlob(CUE.UserCondition, :ACaseSensitive)) like '%' || :AExpression || '%' ESCAPE '~') 
            or
            ((select outExpr from 
              ManageUpperForBlob(CUE.UserCheckExpression, :ACaseSensitive)) like '%' || :AExpression || '%' ESCAPE '~') 
          ) and
          (CE.id not in (select Expr_ID 
                           from GetSystemIDsForExpression(:AExpression, 0, 0, :ACaseSensitive)
                         )
          )
      into :Expr_ID, :Chart_ID     
    do begin
      suspend;
    end       
  end
end;

Generated by ABRA Software a.s. 27.10.2021 16:34:37