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;