Temat: Wyświetlanie nagłówków w temp-table

Hej, mam nadzieję, że ktoś tu zagląda jeszcze ;-).

Mam 2 temp-table. Jedna zależna od drugiej.
Zbieram sobie w nich informacje.
Dochodzę do momentu wyświetlenia informacji.
Jak robię
for each tbl1 no-lock:
disp
tbl1_1
tbl1_2.
end.

to program ładnie mi wyświetla najpierw 1 wiersz nagłówka, a potem dane jedno pod drugim ładnie.

Natomiast jak robię tak:
for each tbl1 no-lock:
disp
tbl1_1
tbl1_2.

for each tbl2 no-lock where
tbl2_1 = tbl1_2:
disp
tbl2_1
tbl2_2
end.
end.

To tbl2 wyświetla jedno pod drugim ładnie jak chcę, natomiast każdy rekord tbl1 jest poprzedzony nagłówkiem.

!@#$!@#%$

Wie ktoś jak to ominąć?
Krzysztof Zambrzycki

Krzysztof Zambrzycki PM, Architekt IT

Temat: Wyświetlanie nagłówków w temp-table

Sprawa wygląda tak:
Ponieważ nie masz nie masz zdfiniownej jaie formatki do prezentowania danych.
W pierwszym przykładzie używasz jednego bloku przetwarzania i system tworzy jedną domyślną formatkę dla tego bloku i wszystko jest OK. Nagłówek pojawia się na każdej stronie. Nie wiem jak ustawioną nasz wielkość strony (liczbę wierszy) ale domyślnie jest chyba 24 wiersze. Jeśli gdzieś wcześniej ustawiłeś 0 to pojawi się tylko raz.
W drugim przykładzie masz dwa bloki wzajemnie zagnieżdżone i system domyślnie tworzyć bedzie oddzielne formatki dla tych obu bloków.
Zatem:
1. Dla pierwszej instrukcji display utworzy formatkę dla pierwszej tablicy i wyświetli przy tym nagłówek (bo jest to pierwszy wiersz w formatce)
2. Po wyświetleniu pierwszego wiersza wchodzi do drugiego bloku gdzie tworzy nową formatkę dla drugiej tablicy - oczywiście wyświetli nagłówek a jednocześnie zamyka poprzednią formatkę. Po wyświetleniu wszystkich rekordów zależnych kończy pracę tego bloku i tym samym zamyka formatkę drugą.
3. Wraca do pętli głównej i ponieważ nie ma tam już pierwszej formatki to utworzy ją od nowa i oczywiście ponownie wyświetli nagłówek - bo bedzie to pierwszy wiersz w nowej formatce.
Aby tego uniknąć można robić to na dwa sposoby:
1. prostszy i prymitywniejszy to wykorzystać jedną pętlę:
for each tbl1 no-lock, each tbl2 no-lock where tbl2.tbl2_1 = tbl1.tbl1_2:
display tbl1_1
tbl1_2
tbl2_1
tbl2_2.
end.
2. Bardziej rozwinięta forma to:
for each tbl1 no-lock, each tbl2 no-lock where tbl2.tbl2_1 = tbl1.tbl1_2
break by tbl1.tbl1_2:
if first-of(tbl1.tbl1_2) then display tbl1_1
tbl1_2 skip with frame ramka1.
display
tbl2_1
tbl2_2 with frame ramka1.
end.
3. Można zdefiniować ramkę dla obu tabel poprzez instrukcję define frame ramka1 ..... itp. ale jeszcze przed pętlą.
Na szczęście takich instrukcji już się prawie nie wykorzytuje w nowszych wersjach OE z ręki.

Temat: Wyświetlanie nagłówków w temp-table

Dzięki, ostatnio też właśnie dość dużo się dowiedziałem o wyświetlaniu w tych ramkach i już wiem, że muszę mu wskazywać często gęsto je.
Krzysztof Zambrzycki

Krzysztof Zambrzycki PM, Architekt IT

Temat: Wyświetlanie nagłówków w temp-table

Zasady działania ramek są identyczne dla tabel, zmiennych oraz temp-table. Na ten temat jest dość duzy rozdział w dokumentacji.



Wyślij zaproszenie do