QBS >> Elementy standardowe >> QM-RawTextExport >> Dokumentacja techniczna

QM-RawTextExport
dokumentacja techniczna

Moduł QM-RawTextExport służy do eksportu danych z programu do plików testowych. Posiada szerokie możliwości konfiguracji:

  • tworzenie wielu zestawów eksportów,
  • wybór tabel w obrębie zestawu,
  • wybór kolumn dla danej tabeli,
  • ustawianie parametrów na trzech poziomach: globalnym, zestawu, tabeli,
  • parametry: ścieżka, nazwa pliku, dodawanie nagłówka, koniec linii, ogranicznik i separator pól, translacja, format daty, czasu i pól checkbox.

Instalacja

Moduł QM-RawTextExport spełnia interfejsy TriggerPlugin i TriggerSet, zatem jego instalacja dokonuje się w sposób standardowy:

Użycie

Moduł jest wywoływany z menu i należy go podpiąć jako akcję.

Składnia wywołania:

RawTextExport nazwa_zestawu
gdzie nazwa_zestawu jest typu string i służy do wyboru jednego ze zdefiniowanych zestawów eskportu (patrz konfiguracja).

Przykładowe użycie:

MENU EksportDanychMenu
     TITLE="Eksport danych"
     POS=30 30
{
ID         ACTION                      NAME;
Eksp1      RawTextExport "MSAccess"    "Eksport danych do Accessa";
Eksp2      RawTextExport "Slowniki"    "Eksport słowników";
}

Konfiguracja

Rekord konfiguracyjny składa się z trzech poziomów: globalnego, zestawów, tabel.

Każdy poziom ma swoje specyficzne parametry:

PoziomParametrTypOpisWartość domyślna
globalny Exports array of record Tablica z rekordami opisującymi zestawy eksportów. W rekordach tych można używać parametrów z poziomu zestawu oraz wspólnych. parametr musi być zdefiniowany
zestawu Name string Nazwa zestawu, a zarazem kod odwołania (patrz użycie). parametr musi być zdefiniowany
Tables array of record Tablica z rekordami opisującymi tabele, które mają być wyeksportowane w ramach danego zestawu. W rekordach tych dopuszczalne są parametry poziomu tabeli oraz wspólne. parametr musi być zdefiniowany
tabeli Table string Identyfikator tabeli parametr musi być zdefiniowany
Tab string Identyfikator struktury TAB, która opisuje daną tabelę. To z niej jest brana lista kolumn oraz ich typy i maski. brana z parametru Table
FileName string Nazwa pliku wynikowego. Uwaga - nazwy typu: "../tabela.txt" są niedopuszczalne. tworzona przez dodanie do wartości parametru Table końcówki ".txt"
Columns array of string Tablica identyfikatorów kolumn do wyeksportowania. tablica z wszystkimi nazwami kolumn w tabeli - brana ze struktury TAB
SkipColumns array of string Tablica identyfikatorów kolumn, które należy pominąć przy eksporcie. Uwaga - nie może występować razem z parametrem Columns. null

Istnieje też grupa parametrów wspólna dla wszystkich poziomów. Różnią się one od parametrów specyficznych tym, że są dziedziczone - tzn. jeśli jakiś parametr nie został zdefiniowany na danym poziomie, to jest on brany z poziomu nadrzędnego. W przypadku, gdy nie ma definicji na żadnym poziomie, ustawiana jest wartość domyślna.
Uwaga - napisanie Xyz = null nie spowoduje ustawienia parametru Xyz na wartość null, tylko zostanie potraktowane jak brak definicji tego parametru na danym poziomie.

ParametrTypOpisWartość domyślna
Path string Ścieżka do katalogu, do którego będą eksportowane tabele. Może być bezwzględna (np. "C:/eksport/") lub względna ("eksport"). Jeśli katalog nie istnieje, zostanie stworzony. parametr musi być zdefiniowany
Charset string Standard polskich znaków. Listę dostępnych można zobaczyć w klasie qline.io.CharToByteConverter. Obecnie są to: DEFAULT, CP1250, ISO_8859_2, LATIN2, MAZOVIA. "DEFAULT"
Header boolean Parametr określa, czy w pierwszej linii eksportu ma zostać wypisana lista eksportowanych kolumn. Uwaga - na wygląd tej linii wpływ mają parametry: LineFeed, Delimiter, Separator. true
LineFeed string Koniec wiersza. W Windows zwykle używa się "\r\n", w Linuksie i Javie "\n". "\r\n"
Delimiter string Ogranicznik pól - tym napisem będą otoczone wszystkie eksportowane pola. Najczęściej używane to: "" i "\"". ""
Separator string Separator pól - tym napisem będą rozdzielane pola w obrębie wiersza. Najczęściej używane to: "\t", ";", ",", " ". "\t"
Translation array of record Tablica z regułami translacji. Każda reguła opisana jest rekordem z parametrami Src i Dst. Oba parametry są typu string, przy czym Src musi mieć długość równą 1.
Każda eksportowana wartość przed wypisaniem do pliku przechodzi translację. Polega ona na zamianie znaku podanego w Src na napis podany w Dst.
Parametr równy null jest równoważny tablicy bez żadnych reguł.
Uwaga - ogranicznik i separator nie podlegają translacji.
Uwaga2 - napis wygenerowany w wyniku którejś z reguł nie jest już poddawany translacji (patrz: przykład).
null
TimeFormat string Format dla pól o masce TIME. Jeżeli jest null, to format brany ze struktury TAB. Dopuszczalne wartości są takie, jak w masce TIME (patrz: Opis masek - TIMEnull
DateFormat string Format dla pól o masce DATE. null
CheckBoxFormat array of string Format dla pól o masce CHECKBOX. Wartością parametru jest dwuelementowa tablica. Pierwszy element oznacza, co ma być wypisywane do pliku, gdy w polu jest 0 lub null. Jeśli w polu jest inna wartość, to wypisywany jest drugi element. null

Przykład translacji:

    Translation = recordarray {
        Src,  Dst;
        "\n", "<BR>";
        "\r", "";
        "\t", "&nbsp;&nbsp;&nbsp;&nbsp;";
        "<",  "&lt;";
        ">",  "&gt;";
        "&",  "&amp;";
    };
Tak zdefiniowana translacja pozwoli nam na eksport danych w stylu html-owym.

Odnośnie Uwagi2 z opisu Translation - jeśli weźmiemy:

    Translation = recordarray {
        Src,  Dst;
        "a",  "(b)";
        "b",  "c";
    };
to napis abc zostanie zmieniony na (b)cc, a nie na (c)cc.
Niemożliwe jest zatem zapętlenie i bez obaw można pisać:
    Translation = recordarray {
        Src,  Dst;
        "a",  "A";
        "A",  "a";
    };

Przykład

record {
    // ---------- Poziom globalny ----------

    Path    = "exp/";
    Charset = "ISO_8859_2";

    Header    = true;
    LineFeed  = "\r\n";
    Delimiter = "\"";
    Separator = ";";

    Translation = recordarray {
        Src,  Dst;
        "\n", "\\n";
        "\r", "";
        "\t", "\\t";
    };
    TimeFormat = "hh:mm:ss";
    DateFormat = "YYYY-MM-DD";
    CheckBoxFormat = array {"N"; "T"; }; 

    Exports = array {
        record {
            // ---------- Poziom zestawu ----------
            Name = "MSAccess";

            Delimiter = "|";
            Separator = ";";
            Translation = recordarray {
                Src,  Dst;
            };

            Tables = array {
                record {
                    // ---------- Poziom tabeli ----------
                    Table = "ADRESY";
                    Tab   = "ADRESY_EDIT";
                    FileName = "adr.txt";
                    SkipColumns = array {"LOGO"; };
                };
                record {
                    Table = "USERS";
                    Columns = array { "ID"; "LOGIN"; "NAME"; "LASTNAME"; };
                    Separator = " ";
                };
            };        
        };            
    };                
};                

Valid HTML 4.01!