Definicje XML
Plik formatu XML umożliwia zapisanie informacji z dowolnej bazy danych, a nawet twierdzi się, że XML jest bazą danych. Ponieważ cały współczesny Świat informatyczny w końcu dogadał się w zakresie formatu wymiany danych, będziemy się starali, żeby to oprogramowania spełniało te nowoczesne tendencje. Nie patrząc na strategię wielu producentów (i autorów) oprogramowania, którzy starają się wbudować eksport do XML do swoich aplikacji, ale niestety ze sztywną strukturą, to oprogramowanie pozwala na swobodną definicję struktury XML.
Kilka szczegółów technicznych:
- xml składa się z elementów i atrybutów
- element definiujemy jako ścieżka np. \raporcik\element
- atrybut definiujemy jako ścieżka zakończona wskazaniem czyli, np. \raporcik\element\@atrybucik
W tym oknie znajdują przykłady, które zawierają wykaz elementów i atrybutów pliku xml. Import i eksport danych musi być poprzedzony zdefiniowaniem, co i gdzie ma się znaleźć, czyli należy wskazać z której tabel i pola mają pochodzić dane do atrybutu i do której tabeli i pola mają być zapisane dane z atrybutu. Oba procesy różnią się między sobą kierunkiem przepływu danych i dlatego należało wprowadzić pewne zmienne pomocnicze:
Eksport: pozycja, rekordy, liczba Import: wartość
Zmienna pomocnicza pozycja zawiera aktualnie eksportowaną pozycję, może przyjmować wartości zgodnie z zapisem w polu liczba definicji XML, czyli np. 0...999
Zmienne rekordy i liczba, to jednowymiarowa tablica zwierająca numery zaznaczonych rekordów w multiselekcie (w tabelce okienka po naciśnięciu Shift i kliknięciu myszką na jakiś oddalony wiersz), a liczba, to rozmiar tej tablicy. Przykład zastosowania wszystkich zmiennych pomocniczych:
iif(pozycja<=liczba,UZ->(dbgoto(rekordy[pozycja])),.F.)
Formuła sprawdza, czy aktualna pozycja jest możliwa do osiągnięcia, czyli czy jest rekord do którego można zrobić skok za pomocą funkcji dbgoto(), jeśli tak to go wykona, a jeśli nie, to zwraca FAŁSZ, co jest sygnałem o końcu eksportu danych. Funkcje zapisane jako formuła elementu powinny zwracać wartość logiczną oznaczającą zgodę na kontynuację procesu lub brak zgody.
Zmienna wartość zawiera wartość atrybutu do zapisu w polu tabeli bazy danych.
W formułach można zastosować następujące funkcje:
Funkcja | Opis |
---|---|
val( <tekst> ) | zwraca liczbę |
str( <liczba>, <długość>, <po kropce> ) | zwraca tekst |
iif(<warunek>,<prawda>,<fałsz>) | zwraca odpowiednio <prawda> lub <fałsz> w zależności od spełnienia <warunek> |
int(<liczba>) | zaokrągla do liczby całkowitej poprzez odcięcie |
liczba(<nieznany_typ>) | zwraca liczbę |
round(<liczba>,<dziesiąte>) | zaokrągla matematycznie do <dziesiąte> miejsc po przecinku (kropce) |
rtrim(<tekst>) | odcięcie spacji z prawej strony tekstu |
ltrim(<tekst>) | odcięcie spacji z lewej strony tekstu |
StrTran(<tekst>, <szukany>, [<zamien_na>], [<nr_znaku_poczatku>], [<nr_znaku_konca>]) | zwraca <tekst> z zamienionymi znakami <szukany> na <zamien_na>, można nie stosować pozostałych parametrów |
dbskip(<liczba>) | zmień rekord o <liczba> pozycji |
dbgoto(<liczba>) | skocz do rekordu o numerze <liczba> |
dbseek(<tekst>) | szukaj łańcucha tekstowego zgodnie z indeksem |
padl(<tekst>,<liczba>) | uzupełnij <tekst> o <liczba> spacji z lewej strony |
padr(<tekst>,<liczba>) | uzupełnij <tekst> o <liczba> spacji z prawej strony |