[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Progress mnie oszukuje ;-)
Witam.
Nie wiem, czy jest to znany problem, czy tez jest to moj brak wiedzy...
Otoz przy zlozeniu dwoch buforow tej samej tabeli w jednej petli FOR EACH,
kiepsko wypada sortowanie...
Zeby przyblizyc problem, opowiem historie...
W firmie ubezpieczajacej samochody jest sobie drzewiasta struktura
agentow (zalozmy, ze ma glegokosc 2).
Szef
/ | \
Agent Agent Agent
Umowe na ubezpieczenie podpisuje agent, ale w prowizji partycypuje
szef. Struktura agentow sie zmienia. Agent moze awansowac, szef zostac
zdegradowany, albo wyrzucony z firmy ;-)
Dlatego na umowie chcemy pamietac jaka byla ich struktura w momencie
podpisania ubezpieczenia.
Tworze sobie nastepujaca strukture
tabela1: ubezpieczenie
pola: id_ubezpieczenia AS INT
id_agenta AS INT EXTENT 2
tabela2: agent
id_agenta AS INT
nazwisko AS CHAR
imie AS CHAR
W polu ubezpieczenie.id_agenta[1] jest id agenta,
w polu ubezpieczenie.id_agenta[2] jest id szefa (obydwa id w momencie
podpisania ubezpieczenia)
I teraz nieszczesna petla
DEF BUFFER xagent FOR agent.
FOR EACH ubezpieczenie WHERE...,
FIRST agent WHERE agent.id_agenta = ubezpieczenie.id_agenta[1],
FIRST xagent WGERE xagent.id_agenta = ubezpieczenie.id_agenta[2]
BREAK BY xagent.id_agenta
BY agent.nazwisko:
IF FIRST-OF(xagent.id_agenta) THEN DO:
END.
IF FIRST-OF(agent.nazwisko) THEN DO:
END.
END.
Czyli chce sobie pogrupowac ubezpieczenia wg szefow, a w ich obrebie
wg agentow alfabetycznie.
Bardzo dziwne jest to, ze drugi FIRST-OF uruchamia zawarty w nim fragment
kodu, ale sortowanie odbywa sie nie po nazwisku agenta, ale wg indeksu
PRIMARY (w tym wypadku pole id_agenta).
XREF wskazuje wykorzystanie indeksu PRIMARY, ale SORT-ACCESS jest wg.
nazwiska. Czyli niby wszystko OK.
Jakies sugestie?
Pozdrawiam.
Tomek
________
|_ _|__|Tomasz Fidecki, Progress Analyst/Programmer, UNIX fan
| || _| tomek@pekao-fs,com,pl, phone +48 501 136 122 IRC Fido__
|_||_| My opinion is just mine!
------
Strona WWW: http://pluton.pol.lublin.pl/pugpl/index.htm
Obsluga listy: listserv@zeto.bydgoszcz.pl
Archiwum listy: http://www.zeto.bydgoszcz.pl/progress/index.html
------