QBS >> Elementy standardowe >> Q-Line 3000 element - QN-Arkusz

Logo QBS

QN-Arkusz

QN-Arkusz jest elementem niejako wspierającym klocek QN-Browser Służy on do wprowadzania danych na zasadzie arkusza kalkulacyjnego.

Na wstępie omówimy przeznaczenie tego elementu a następnie podamy kilka przykładów z opisem.

Przeznaczenie

Klocek QN-Arkusz wykorzystywany jest do wprowadzania danych na zasadzie arkusza kalkulacyjnego. Poniżej podajemy przykład zastosowania tego klocka do przeglądania spraw pracowniczych:

Przykład zastosowania klocka QN-Arkusz

W celu poprawienia danych klika się w odpowiednim miejscu i od razu wprowadza / modyfikuje dane.

Klasyczne przeglądanie i obróbka danych w QN-Browser

Oto przykład zwykłego QN-Browser'a: aby wpisać nowy rekord trzeba nacisnąć na belce przycisk albo wcisnąć klawisz [Insert]. Pojawia się wtedy okienko edycji rekordu, gdzie zmienia się wartości pól. Przy próbie modyfikacji, wyrażonej przyciskiem z belki albo klawiszem [M] także pojawi się to okienko edycji. Aby usunąć rekord należy wybrać przycisk albo wcisnąć na danym rekordzie klawisz [Del].

Zastosowanie QN-Arkusz do powyższego zagadnienia

W QN-Arkusz nie ma potrzeby wywoływania okna edycji rekordu. Aby dodać nowy rekord wystarczy zejść strzałkami pod ostatni rekord w arkuszu (ten z gwiazdką) i bezpośrednio w polach wpisywać nowe wartości. Przy modyfikacji wystarczy przejść na wybrane pole - kliknąc i wpisać nową wartośći. Kasowanie rekordów działa standardowo.

Konfiguracja w struct.qcon'ie

Aby zamienić obecny BROWSER należy zastąpić maskę pola opisującego browser na EDITABLE_BROWSER.

//
//
//
//
TAB SPEC_RACH_EDIT  extends  SPEC_RACH  SPEC_DOK_ROZCH_EDIT RABATY STANY_MAG_CHECK_EXT;

...
ID            VIS     LEN  TYPE    NAME
...
PROWIZJA      -       0    STRING  "Prowizje wg specyfikacji"     MASK=EDITABLE_BROWSER 
           EVH=ListIDCopy(V_PROWIZJA_BRO, LINKSPECFV, Record( WNETTO=WNETTO LINKFV=LINKFV DATASPRZ=DATASPRZ))  ;


//
//
//










Jako maskę należy wpisać 
MASK=EDITABLE_BROWSER

Polom edytowanym w Tabie opisującym dany browser należy dodać opcje NO3DPANEL

//
//
//
//
TAB SPEC_RACH_EDIT  extends  SPEC_RACH  SPEC_DOK_ROZCH_EDIT RABATY STANY_MAG_CHECK_EXT;

...
ID            LEN  TYPE     NAME                ATTRIB
...
KODP           10  STRING   "Kod pracownika"    (NO3DPANEL)                           ;    
PROCENTPROW    8   DOUBLE   "Procent prowizji"  (NO3DPANEL) MASK=DOUBLE(2)            ;


//
//
//










Polom edytowanym w Tabie opisującym dany 
browser należy dodać opcje: 
ATTRIB=(NO3DPANEL)
Bez tej opcji bedą te pola mieć wygląd 
niestandardowy.

Operacje matematyczne

Często zachodzi potrzeba wyliczenia określonych funkcji dla danej tabeli. Obliczana jest ona wtedy na podstawie wartości wszystkich wierszy. Przykładową funkcją może być suma, maksimum, minimum kolumny. Jednak często potrzeba dla skrótowego opisu wypisać listę elementów kolumny lub listę stworzoną z wartości określonego wyrażenia obliczanego dla każdego wiersza. Tego typu "sztuczki" umożliwia QN-Arkusz.

Narzędzie Arkusz pozwala na wykonywanie na tabeli operacji matematycznych i konkatenacji stringów.

Dla danej tabeli dokonuje operacji na polach:

Dostępne operacje matematyczne:

  1. Zliczanie - podaje liczbę wierszy
  2. Sumowanie - sumuje wartości kolumny (jeżeli pole jest typu liczbowego)
  3. Wyznaczenie maksimum - podaje największą wartość w kolumnie, np. w kolumnie wiek dziecka, wynikiem będzie wiek najstarszego dziecka
  4. Wyznaczenie minimum - analogicznie do maximum, tylko będzie podana najmniejsza wartość kolumny

Dostepne operacje na stringach:

  1. Konkatenuje stringi otrzymane z każdego wiersza definiowane wyrażeniem. Kolejność elementów nie jest określona. Elemety listy nie powinny być swoimi podciągami.

Schemat definicji w struct.qcon'ie

Operacje matematyczne:

Operacje na stringach

  • BASEFUN=CONCAT(NazwaBrowsera, WYRAŻENIE)
    WYRAŻENIE = ELEMENT | WYRAŻENIE + ELEMENT
    ELEMENT = POLE | POLE + String
    POLE = Nazwa_Kolumny.

    Przykład 1

    Zsumowanie kolumn "procent prowizji", które są w %. Wynik w polu "Suma procentów prowizji".

    Przykład wyglądu ekranu:

    Sumowanie kolumny procent prowizji

    Konfiguracja w struct.qcon'ie

    //
    ID            VIS     LEN  TYPE    NAME
    ...
    PROWIZJA      -       0    STRING  "Prowizje wg specyfikacji"     MASK=EDITABLE_BROWSER 
               EVH=ListIDCopy(V_PROWIZJA_BRO, LINKSPECFV, Record( WNETTO=WNETTO LINKFV=LINKFV DATASPRZ=DATASPRZ))  ;
    SUMAPROC      SHOW    8    DOUBLE  "Suma procentów prowizji"      MASK=DOUBLE(2) EDILEN=5
               BASEFUN=SUM(PROWIZJA, PROCENTPROW)                              ;
    //
    
    
    
    
    Browser, w którym jest zdefioniowana nasza tabela.
    
    BASEFUN - wywolanie funkcji SUM, która
    z browsera PROWIZJA sumuje wartości pól PROCENTPROW
    

    Przykład 2

    Sprawdzanie czy suma prowizji nie przekracza 100%. Wynik w polu z ostrzeżeniem.

    Przykład wyglądu ekranu:

    Sprawdzanie warunku

    Konfiguracja w struct.qcon'ie:

    //
    ID            VIS     LEN  TYPE    NAME
    ...
    PROWIZJA      -       0    STRING  "Prowizje wg specyfikacji"     MASK=EDITABLE_BROWSER 
               EVH=ListIDCopy(V_PROWIZJA_BRO, LINKSPECFV, Record( WNETTO=WNETTO LINKFV=LINKFV DATASPRZ=DATASPRZ))  ;
    ...
    PRZEKROCZONE  SHOW    8    STRING  ""                             ATTRIB=(COLOR=SIMPLE(LIGHT_RED) FONTSTYLE=BOLD) 
               AUTFUN=(SUMAPROC<=100.1)?"":"Przekroczyles 100% prowizji!"   EDILEN=25;
    //
    
    
    
    
    Browser, w którym jest zdefioniowana nasza tabela.
    
    Pole PRZEKROCZONE jest wypełniane inaczej w 
    zależności od wartości pola SPROCPROW, tzn. 
    jeśli SUMAPROC > 100% z uwzględnieniem błędu 
    0.1 %, jest wyświetlane jaskrawe ostrzeżenie.
    

    Przykład 3

    Wypisanie listy elementów z kolumn "Imię", "Nazwisko". Wynik w polu "Wykonawcy wg nazwiska".

    Przykład wyglądu ekranu:

    Ekran konkatenacji

    Konfiguracja w struct.qcon'ie:

    //
    ID            VIS     LEN  TYPE    NAME
    ...
    PROWIZJA      -       0    STRING  "Prowizje wg specyfikacji"     MASK=EDITABLE_BROWSER 
               EVH=ListIDCopy(V_PROWIZJA_BRO, LINKSPECFV, Record( WNETTO=WNETTO LINKFV=LINKFV DATASPRZ=DATASPRZ))  ;
    ...
    WYKONAWCY     SHOW    40   STRING  "Wykonawcy"                    
               BASEFUN=CONCAT(PROWIZJA, "(" + IMIE + " " + Nazwisko + ") ")                            ;  
    //
    
    
    
    
    Browser, w którym jest zdefioniowana nasza tabela.
    
    BASEFUN - wywołanie funkcji CONCAT,
    która z browsera PROWIZJA konkatenuje wartości 
    pól IMIE i NAZWISKO oddzielone spacją.