[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gdzie mozna znalezc opis gramatyki???
On 26 Jun 97 at 9:02, Tomasz Fidecki wrote:
> Poszukuje PELNEGO opisu gramatyki 4GL Progressa. Chce uniknac
> niespodzianek typu niemoznosc uzycia CAN-FIND w skladni OPEN QUERY.
> Z tego co widze zawodnicy z PSC dosc swobodnie traktuja "expression"
> w zaleznosci od kontekstu.
>
> W zwiazku z powyzszym mam nastepujace zadanie:
>
> +------+ lezy w +-----------+
> | kosz |------------------------<| truskawka |
> +------+ zawiera +-----------+
>
> ot taka sobie standardowa relacja 1:wiele
>
> Chcialbym otworzyc browser z danymi o koszach, ale warunek ma
> dotyczyc truskawki. Innymi slowy np. przegladarka koszy, w ktorych
> leza TYLKO czerwone truskawki. (zalozenie: w koszu moga lezec
> czerwone i zielone truskawki)
>
> Pierwsze podejscie:
> OPEN QUERY q1 FOR EACH kosz WHERE NOT CAN-FIND(truskawka OF kosz
> WHERE truskawka.kolor <> "czerwona")
> Pudlo - Progress nie pozwala uzywac CAN-FIND w skladni OPEN
> QUERY. W zwyklym grupowaniu FOR EACH taki manewr przechodzi.
>
> Drugie podejscie:
Nie twierdze, ze rozwiazanie eleganckie i ze zawsze skuteczne. Przy
duzej liczbie rekordow moze sie wylozyc, ale w zasadzie powinno
dzialac (nie sprawdzalem)
define temp-table t-kosz like kosz.
for each kosz:
if not can-find (truskawka of kosz
where truskawka.kolor <> czerwony) then do:
create t-kosz.
assign /* t-kosz.pole1 = kosz.pole1
t-kosz.pole2 = kosz.pole2 .... */ .
end /* if */.
end /* for */.
open query q1 for each t-kosz.
Kilka luznych uwag:
jedynym i najlepszym opisem gramatyki Progressa jest dokumentacja,
konkretnie "Language Reference" oraz Biuletyny Techniczne. W zasadzie
jezeli cos nie dziala zgodnie z dokumentacja, nalezy to zglosic do
supportu Progressa.
sama funkcja CAN-FIND jest dosyc dziwna i nie we wszystkich
przypadkach mozna jej uzywac. Ponadto, zalecenia sa takie, zeby -
ze wzgledow wydajnosciowych - unikac jej jesli tylko mozliwe. Na
przyklad zamiast warunku
IF CAN-FIND ....
stosowac
FIND .... NO-ERROR
IF AVAILABLE ...
Pozdrowienia dla Listowiczow
Pawel Dobrzynski
-----------------------------------------------------
Pawel Dobrzynski, CSBI Progress Department
Computer Systems for Business International SA
ul. Plowiecka 1, PL 04-501 Warszawa, POLAND
phone: (+48-22) 673-16-80 fax: (+48-22) 612-31-22
http://www.csbi.waw.pl/