Pracownia specjalistyczna

Podstawy pisania prostych aplikacji III

Ćwiczenie 1. Kategoryzacja widoków

Kategoryzacja umożliwia posortowanie i pogrupowanie dokumentów

Widok z kategoryzacją wg osoby do której przydzielony jest sprzęt 

     Jak to zrobić pokazuje rysunek poniżej

         Ustawić właściwości pierwszej kolumny

 

Zadanie: Utworzyć widoki „wg osób” i widok „wg pokojów” 

Ćwiczenie 2. Sumowanie kolumn w widokach

     Zmodyfikować widok „wg osoby” tak aby zsumować wartości kosztów

 



Ćwiczenie 3. Pobranie wartości z widoku do dokumentu (Funkcja @Dblookup)

Użyto obliczalnego pola : sOsobaImię

I formuły:

@If( sOsoba != "";

         @DbLookup (""; ""; "Osoby"; sOsoba; 2);

         ""

     )

która:

- jeśli pole sOsoba nie jest puste

-         znajduje w widoku „Osoby” dokument, którego wartość pierwszej kolumny jest równa polu sOsoba

-         pobiera 2 kolumnę



Powinniśmy uzyskać: po wybraniu nazwiska osoby imię powinno zostać obliczone (pobrane z dokumentu osoby)

 

Dodać pole pobierające Telefon osoby

Formuła:

@If( sOsoba != "";

         @DbLookup (""; ""; "Osoby"; sOsoba; "Telefon");

         ""

     )

@DbLookup (Notes/Domino databases) 

Given a key value, looks in the specified view (or folder) and finds all documents containing the key value in the first sorted column within the view. For each selected document, @DbLookup returns either the contents of a specified column in the view, or the contents of a specified field.

Syntax

@DbLookup( class : "NoCache" ; server : database ; view ; key ; fieldName ) or

@DbLookup( class : "NoCache" ; server : database ; view ; key ; columnNumber )

view

Text. The name of the view or folder in which to search. The view name must exactly match the view's full name as specified in the view InfoBox (you can omit any synonyms). If the view cascades from another name on the menu, include that name too. See "Specifying the view name," below.

key

Text. Determines which document is actually read in order to retrieve a value. A document's key is the value displayed in the first sorted column within the view. See "Specifying a key."

fieldName

Text. The name of the field from which the data will be retrieved, once the correct document(s) has been identified. See "Specifying a field name" below.

columnNumber

Number. When you use a column number, Notes/Domino finds all documents in the view that match the specified key, and returns whatever value is displayed in the indicated column for each of those documents, regardless of the formula used to display the data. See "Specifying the  column number."

Return value

valuesFound

Text, numbers, date-time, or text-list. The values found in the fieldName or column you indicated. See "Accessing the values found," later in this chapter. 

Ćwiczenie 4. Data utworzenia i edycji

     Dodanie pół i ustawienie ich właściwości

     Utworzyl

     Edytowal

DataUtworzenia

DataModyfikacji 

 

W ten sposób uzyskamy metryczką dokumentu informującą kiedy i przez kogo dokument był ostatnio modyfikowany modyfikujących dokument

Ćwiczenie 5. Historia dokumentu

     Dodać pole historia dokumentu 

 

     W zdarzeniu dotyczącym formularza Querysave dodać formułę:

FIELD Historia := Historia;

@SetField("Historia"; @Text(@Now) + "  --> " + @Name ([CN];@UserName) + " edytował" + @NewLine + Historia  )




Ćwiczenie 6. Historia zmian zawartości pól

Napisz kod, który będzie zapisywał w polu Historia zmiany zawartości dwóch wybranych pól formularza

np. Data: Pole Subject zostało zmienione z zawartości :... na zawartość … przez użytkownika ….

Logowanie do Historii zmian w innych polach

PROBLEM

Gdy dokument jest na serwerze może być edytowany przez różne osoby. Może się zdarzyć  sytuacja gdy ktoś zmieni zawartość jakiegoś ważnego pola na nową wartość.  My chcemy żeby wszelkie zmiany pola "rodzaj" były logowane w polu historia".

w Querysave:

FIELD historia := historia;
@SetField("historia"; @Text(@Now)+ " -> "+@Name([CN];@UserName) + " edytowal " +@NewLine +historia);

@If(rodzaj_temp != rodzaj;
@SetField("historia"; @Text(@Now)+ " -> "+@Name([CN];@UserName) + " ZMIANA POLA RODZAJ z wartości: " + rodzaj_temp + "na wartość: " +  rodzaj +@NewLine + historia);
"");


FIELD rodzaj_temp := rodzaj;

 

Pozdrawiam,

 

Jacek Grekow