[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Reposition.




W jaki sposób wykonać reposition na browserze dynamicznym?

Wykonując jedną z metod REPOSITION-XXX() odnoszącą się do zapytania związanego z wykazem (browserem). Wskaźnik (handler) do tego zapytania znajduje się na atrybucie QUERY wykazu.
 
Czy w Create Browse można ustawić INDEXED-REPOSITION?

INDEXED-REPOSITION nie jest opcją dotyczącą wykazu (browsera) tylko zapytania (query) w związku z tym dla wykazu ustawić jej nie można. Można to zrobić dla zapytania podczas jego otwierania instrukcją OPEN QUERY (dla zapytania statycznego) lub metodą QUERY-PREPARE() (dla zapytania dynamicznego) umieszczając we wzorcu zapytania podawanym jako parametr tej metody tekst o składni zbliżonej do składni instrukcji OPEN QUERY zawierający opcję INDEXED-REPOSITION.

Warto tutaj zwrócić uwagę na to, że wykaz może być traktowany dynamicznie, jeśli był zdefiniowany jako statyczny, najlepiej bez żadnych kolumn. Mając wskaźnik do takiego wykazu (z atrybutu HANDLE) można przed lub w trakcie jego działania dodawać/kasować kolumny odpowiednimi metodami wykazu a także wiązać z nim różne zapytania zarówno statyczne jak i dynamiczne ustawiając na atrybut QUERY wskaźniki (handlery) do tych zapytań.
Od wersji 9.1 wykaz i zapytanie (niezależnie od ich dynamiczności) są dwoma oddzielnymi bytami, które są związane poprzez atrybut wykazu QUERY.

Jak wykonać wyszukiwanie na buforze tablicy zbudowanej dynamicznie
inaczej niż kombinacją pętli i BUFFER-COMPARE() ?

Jeśli chodzi tutaj o tymczasową tablicę dynamiczną, to za pomocą zapytania dynamicznego na tej tablicy. W metodzie QUERY-OPEN tego zapytania, której parametrem jest łańcuch o składni zbliżonej do składni instrukcji OPEN-QUERY, można używać nazwy bufora tej tablicy dynamicznej wraz z nazwami pól, które dla tej tablicy zostały dynamicznie zdefiniowane. Nazwy tych pól są znane, bo były w programie definiowane dla tej tablicy. Skąd wziąć nazwę bufora ? Jeśli to jest własny bufor dynamiczny, to jego nazwa jest znana, bo została określona w czasie jego tworzenia instrukcją CREATE BUFFER z FOR TABLE odnoszącym się do wskaźnika tablicy dynamicznej, jeśli zaś jest to bufor domyślny, to wskaźnik do niego (handler) znajduje sie na atrybucie DEFAULT-BUFFER-HANDLE utworzonej tablicy a mając wskaźnik do bufora jego nazwę można znaleźć na atrybucie bufora NAME. Oczywiście ten łańcuch dla metody QUERY-PREPARE trzeba zbudować w trakcie działania programu.

-----------

Pozwolę sobie nieskromnie na auto-reklamę i polecem moje wystąpienie na konferencji, którego tekst jest umieszczony w ostatnim magazynie PROGRESS 4PL, a które omawiało te właśnie zagadnienia. Niestety, zarówno moje wystąpienie słowne jak i artykuł w tym magazynie jest ze względu na czas bądź to objętość tekstu bez kilku przykładów, które lepiej obrazowałyby omawiane zagadnienia.

Pozdrawiam,

                   
Henryk Jusza               mailto:henju@pg.gda.pl
-------------------------------------------------
Ośrodek Informatyczny Politechniki Gdańskiej
Pracownia Rozwoju Oprogramowania
tel (058) 347-28-01          fax (058) 347-24-63