QBS >> Elementy standardowe >> Q-Tenberg >> Podręcznik do Q-Tenberg'a

QVL - dokumentacja

Poniżej dokumentacja języka QVL. W tabeli są podane klasy i metody dostępne w QVL-u. Nie wszystkie lecz te najczęściej używane. Źródła (zatem i więcej inforamcji) są w katalogu qtenberg/eo w klasach eo_nazwaKlasy.


Array  Buffer  Date  ParamsEngine  Record  System  Table  Time  Utils

Klasa Metody

Array

void add(Object obiekt)

Do tabeli wrzuca podany obiekt. W qtenbergu często wykorzystywane przy budowaniu tablicy uporządkowań do otwarcia tabeli:

		Table klienci := new Table("V_KLIENCI");
		Array orders := new Array();
		orders.add("NAZWISKO");
		orders.add("IMIE");
		orders.add("DATA_URODZENIA");
		klienci.open(orders);
			
AutFunLong getSize()

Zwraca wielkość tabeli. Przydatne w przeglądaniu tablicy, jeśli robiliśmy np. grupowanie w pamięci.

Buffer

void fix()

Zamyka (fiksuje) bufor. Teraz już nie będzie można do niego nic wpisać. Jeżeli jest to tabelka-lista, to następne wpisanie spowoduje dodanie nowej linijki. Jeżeli mamy tabelkę w tabelce, zafiksowanie zewnętrznej spowoduje zamknięcie wewnętrznej i np. wydrukowanie stopki wewnętrznej.

Buffer getBuffer(AutFunString jaki_bufor)

Zwraca bufor - dziecko danego bufora określony poprzez prarametr jaki_bufor. Nie trzeba podawać pełnej ścieżki,

	mainBuf.getBuffer("S.SPECYFIKACJA.TAB.BODY.LINE1.CELL_2.NAZWISKO");
			
trzeba tylko wyrazić się jednoznacznie:
	mainBuf.getBuffer("SPECYFIKACJA.NAZWISKO");
			
void goTo()

Powoduje przejście qtenberga do wyznaczonego bufora (zazwyczaj fragmentu). W ten sposób można osiągnąć przejście na następną stronę: fragment ma pozycję zafiksowaną na początku strony, a my wywołujemy na nim goTo().

void put(Object wartosc)

Wrzuca do bufora podaną wartość (String, int, money ...). Po wrzuceniu wartości bufor jest fiksowany i nie można zmienić jego wartości. Ponowne wywołanie put w tabeli-liście spowoduje utworzenie nowej linijki i wrzucenie tam nowej wartości w opdowieniej kolumnie. W rzeczywistości put wywołuje seta i fixa

void putLine(Object rekord_wartosci)

Wrzuca do bufora obiekt wartości. Wrzuca do wszystkich pól bufora które się nazywają tak samo jak pola rekordu_wartosci. Buforem jest najczęściej TableLine, ale może być też tabela (np. jakiś nagłówek). Od setLine'a rózni się tak jak put od seta.

Argumenty:

  1. obiekt_wartosci - zazwyczaj Record z nazwami pól takimi jak w buforze.
void set(Object wartosc)

Wrzuca do bufora podaną wartość (String, int, money ...). W odróznieniu od puta bufor nie jest fiksowany i można zmienić jego wartość.

void setLine(Object rekord_wartosci)

Wrzuca do bufora obiekt wartości. Wrzuca do wszystkich pól bufora które się nazywają tak samo jak pola rekordu_wartosci. Buforem jest najczęściej TableLine, ale może być też tabela (np. jakiś nagłówek). Od putLine'a rózni się tak jak set od puta.

Argumenty:

  1. obiekt_wartosci - zazwyczaj Record z nazwami pól takimi jak w buforze.

Date

AutFunDate getCurrent()

Zwraca dzisiejszą datę.

Przykład:

	mainBuf.get("NAGLOWEK.DATA_WYDRUKU").put("Data wydruku " 
                      + new Date().getCurrent());
			

ParamsEngine

Record getRecord(AutFunString nazwa_taba, AutFunBool czyLokalne)

Zwraca rekord z wartościami z taba parametrów. Może to być np. tab parametrów wydruku lub parametrów programu.

Argumenty:

  1. nazwa_taba - nazwa taba z parametrami jaki chcemy dostać
  2. czyLokolne - czy to są parametry lokalne czy globalne.

Przykład:

   ParamsEngine parWydruku := new ParamsEngine();
   Record rec := parWydruku.getRecord("TAB_PARAMETRÓW_WYDRUKU",true);
			

Record

addTo(Record suma)

Rekord "dodaje się" do sumy. Uwaga! Trzeba uważać na nulle! Jeżeli rekordy te są tworzone na bazie tabeli z qconów, gdzie nie wszystkie pola są wypełnione, wyskoczy wyjątek. Dlatego czasami lepiej jest, aby rekord suma był stworzony konstruktorem bezparametrowym i putami wyzerowany w odpowiednich polach. Dla calkowitej pewności najlepiej używać jeszcze po prostu puta takiego jak ten:

	suma.put("WARTOSC", suma.get("WARTOSC",0.0)+r.get("WARTOSC",0.0));
			

Przykład:

	r.addTo(suma);
			
Record copy()

Zwraca kopię rekordu, używane do klonowania rekordów.

Przykład: (oldSuma i sumaStrony są klasy Record);

	oldSuma := sumaStrony.copy();
	sumaStrony := new Record(NAZWA_TABELI);
			
Object get(AutFunString nazwaPola)

Zwraca wartość pola z rekordu. Należy raczej używać metody get(String, Object), która ratuje przed otrzymaniem nulla.

Atrybuty:

  1. nazwaPola - nazwa pola z którego chcemy otrzymać wartość. Pole ta musiało wcześniej być wypełnione putem, albo pochodzi z tabeli bazowej rekordu.
Object get(AutFunString nazwaPola, Object wartoscDomyslna)

Zwraca wartość pola z rekordu. Jeżeli ta wartość jest nullem, zwróci wartość domyślną

Atrybuty:

  1. nazwaPola - nazwa pola z którego chcemy otrzymać wartość. Pole ta musiało wcześniej być wypełnione putem, albo pochodzi z tabeli bazowej rekordu.
  2. wartoscDomyslna - obiekt (np. String, int), który zwróci metoda, jeśli miałaby zwrócić null-a

Przykład:

	Record r := new Record("KLIENT");
	mainBuf.getBuffer("PANSTWO").put(r.get("PANSTWO", "POLSKA")); 
			
AutFunBool hasField(AutFunString nazwaPola)

Zwraca prawdę, jeśli rekord ma takie pole.

Atrybuty:

  1. nazwaPola - nazwa pola którego szukamy.
void put(AutFunString nazwaPola, Object wartoscPola)

Do rekordu wstawia wartość w odpowienie pole. Jeśli takiego pola nie było, zostanie ono utworzone z nową wartością.

Atrybuty:

  1. nazwaPola - nazwa pola do którego wrzucamy wartość.
  2. wartoscPola - obiekt wkładany.
Record()

Konstruktor bezparametrowy tworzy pusty rekord (bez żadnych pól);

Record(String TABELA)

Konstruktor tworzący rekord o polach takich samych jak w tabeli TABELA (zgodność typów)

Argumenty:

  1. TABELA - nazwa tabeli z qconów w "ciapkach"

System

void out(AutFunString tekst)

Wyrzuca tekst do pliku out.txt

void setPageNumber(AutFunLong i)

Ustawia numer strony na i.

Table

void addOneSimpleLookup(AutFunString z_jakiej_tabeli, AutFunString klucz_wlasny, AutFunString klucz_obcy, AutFunString nazwa_zrodlowa, AutFunString nazwa_docelowa)

Do tabeli dostawia jedno pole z innej tabeli.

Atrybuty:

  1. z_jakiej_tabeli - Nazwa tabeli skąd brać to pole.
  2. klucz_wlasny - Nazwa naszego pola, do któremgo chcemy dopasować pole z obcej tabeli
  3. klucz_obcy - Nazwa pola z obcej tabeli, które dopasowujemy do klucza własnego
  4. nazwa_zrodlowa - Źródłowa nazwa pola które chcemy ściągnąć
  5. nazwa_docelowa - Docelowa nazwa pola które ściągamy (tak się będzie u nas nazywało)

Przykład:
Do bazy klientów (KLIENCI) dodamy numery rejestracyjne ich samochodów (SAMOCHODY);

	Table klienci := new Table("KLIENCI");
	klienci.addOneSimpleLookup("SAMOCHODY", "ID_SAMOCHODU_JAKI_POSIADA", 
                                    "ID", "NR_REJ", "NR_REJ");
	klienci.open(orders);
			

Jak widać w przykładzie, lookup należy dodać PRZED OTWARCIEM tabeli.

void close()

Zamyka tabelę

void open(Array orders)

Metoda otwierająca tabelę.

Argumenty:

  1. Array orders - tablica z uporządkowaniem po jakim chcemy otworzyć tabelę

Przykład:

		Table klienci := new Table("V_KLIENCI");
		Array orders := new Array();
		orders.add("NAZWISKO");
		klienci.open(orders);
			
Record get()

Zwraca aktualny rekord z tabeli.

AutFunLong getRecordCount()

Zwraca liczbę rekordów w tabeli.

AutFunBool isCurrent()

Zwraca prawdę jeśli jest aktualny rekord (czyli nie doszliśmy np. do końca). Wykorzystywane w wyrażeniach typu

		while (moja_tabela.isCurrent())
		{
		//
		}
			
AutFunBool next()

Przechodzi do następnego rekordu tabeli, zwraca czy po tym ruchu jest jeszcze rekord

AutfunBool prev()

Przechodzi do poprzedniego rekordu tabeli, zwraca czy po tym ruchu jest jeszcze rekord

AutfunBool search(Record czego_szukac)

Wyszukuje zadany rekord w tabeli i zwraca true jeśli taki znalazł. Aby coś wyszukać, trzeba zbudować rekord putami a potem go podać do searcha.

void setBeginEndTable(Record startRec, Record endRec, AutFunLong n)

Metoda zawężająca tabelę "od-do". Uwaga! Tabela musi zostać wcześniej otwarta z uporządkowaniem kolejno po wszystkich polach po których chcemy zawężać. Jeśli chodzi o daty, powinne one być ostatnim uporządkowaniem. Zazwyczaj tylko jedno pole (najczęściej data) jest "od-do", reszta to zwykłe zawężenie (np. faktury hurtowe dla danego klienta od daty do daty). Po zawężeniu pola nie znikają.

Argumenty:

  1. Record beginRec - rekord ograniczający tabelę wynikową od dołu. Musi spełniać te same warunki jak przy setNarrowTable
  2. Record endRec - rekord ograniczający tabelę wynikową od góry. Musi spełniać te same warunki jak przy setNarrowTable
  3. int n - po ilu polach zawężamy.

Przykład:

		Table klienci := new Table("FAKTURY");
		Array orders := new Array();
		orders.add("DLA_KOGO");
		orders.add("DZIENNIK_SPRZEDAZY");
		orders.add("DATA_SPRZEDAZY");
		klienci.open(orders);
		
		Record beginRec := new Record("FAKTURY");
		beginRec.put("DLA_KOGO", "Hyska");
		beginRec.put("DZIENNIK_SPRZEDAZY", "Sprzedaż_Hurtowa");
		beginRec.put("DATA_SPRZEDAZY", jakas-tam-data-z-qconów);

		Record endRec := new Record("FAKTURY");
		endRec.put("DLA_KOGO", "Hyska");
		endRec.put("DZIENNIK_SPRZEDAZY", "Sprzedaż_Hurtowa");
		endRec.put("DATA_SPRZEDAZY", jakas-inna-data-z-qconów);

		klienci.setBeginEndTable(beginRec, endRec, 3);
			
void setNarrowTable(Record narRec, AutFunLong n)

Metoda zawężająca tabelę. Uwaga! Tabela musi zostać wcześniej otwarta z uporządkowaniem kolejno po wszystkich polach po których chcemy zawężać. Po zawężeniu, pola po których zawężaliśmy (i w wyniku tego są wszędzie jednakowe) znikają.

Argumenty:

  1. Record narRec - rekord-wzór do zawężania. Powinien być tego samego typu co zawężana tabela. Powinien zawierać takie (i tylko takie) pola po których zawężamy i z wartościami które nas interesują.
  2. int n - po ilu polach zawężamy (tzn. ile wartości włożyliśmy do narRec-a)

Przykład:

		Table klienci := new Table("V_KLIENCI");
		Array orders := new Array();
		orders.add("NAZWISKO");
		orders.add("IMIE");
		orders.add("MIASTO");
		klienci.open(orders);
		Record narRec := new Record("V_KLIENCI");
		narRec.put("NAZWISKO", "Hyska");
		narRec.put("IMIE", "Wawrzek");
		narRec.put("MIASTO", "Warszawa");
		klienci.setNarrowTable(narRec, 3);
			
void setGroupTable(Array co_grupowac, Array co_sumowac)

Grupuje tabelę po podanych polach i sumuje wybrane pola. Aby można było grupować, tabela musi być otwarta z uporządkowaniem dokładnie i kolejno takim jak Array co_grupowac. W przykładzie poniżej grupujemy wszystkie faktury według wystawiającego i płatnika oraz sumujemy ich wartość.

Argumenty:

  1. Array co_grupowac - tablica zawierająca nazwy pól po których będziemy grupować.
  2. Array co_sumowac - tablica zawierająca nazwy, których wartości będziemy sumować (dla grup).

Przykład:

		Table faktury := new Table("FAKTURY");
		Array orders := new Array();
		orders.add("WYSTAWIL");
		orders.add("PLATNIK");
		faktury.open(orders);
		Array co_grupowac := new Array();
		co_grupowac.add("WYSTAWIL");
		co_grupowac.add("PLATNIK");
		Array co_sumowac := new Array();
		co_sumowac.add("WARTOSC_FAKTURY");
		faktury.setGroupTable(co_grupowac, co_sumowac);
			
i dostajemy tabelę z zestawieniem kombinacji wystawiający-kupujący i sumą ich transakcji.
void setFirst()

Powoduje ustawienie się na pierwszym rekordzie tabeli

void setLast()

Powoduje ustawienie się na ostatnim rekordzie tabeli

void setSelectedTable()

Zawęża tabelę tylko do tych pól, które zostały zaznaczone przez użytkownika. Konieczne przy wydrukach "dla zaznaczonych". Uwaga! Zawężać do zaznaczonych należy PRZED OTWARCIEM tabeli.

Time

AutFunTime getCurrent()

Zwraca aktualny czas.

Przykład:

	mainBuf.get("NAGLOWEK.GODZINA_WYDRUKU").put("Godzina wydruku " 
                             + new Time().getCurrent());
			
Uwaga! Jeśli w lecie godzina jest o 1 za niska (czas zimowy), to w klasie EO_Date należy zmienić metodę
    public AutFunTime qtg_getCurrent()
    {
        return new AutFunTime(Time.getCurrent());
    }
			
    public AutFunTime qtg_getCurrent()
    {
        return new AutFunTime(Time.getCurrentDST());
    }
			
(Dostawić DST) i przekompilować.

Utils

AutFunString slownie(AutFunMoney kwota)

Zwraca wartość kwoty słownie.

AutFunString slownieEnglish(AutFunMoney kwota)

Zwraca wartość kwoty słownie po angielsku

AutFunString slownieRussian(AutFunMoney kwota)

Zwraca wartość kwoty słownie po rosyjsku.