QM-RawTextExport>> Dokumentacja techniczna
|
|
|
|
Moduł
|
|
Moduł QM-RawTextExport
spełnia interfejsy TriggerPlugin
i TriggerSet, zatem jego instalacja dokonuje się
w sposób standardowy:
Moduł jest wywoływany z menu i należy go podpiąć jako akcję.
Składnia wywołania:
RawTextExport nazwa_zestawugdzie 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";
}
Rekord konfiguracyjny składa się z trzech poziomów: globalnego, zestawów, tabel.
Każdy poziom ma swoje specyficzne parametry:
Poziom Parametr Typ Opis Wartość 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.
Parametr Typ Opis Wartość 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", " ";
"<", "<";
">", ">";
"&", "&";
};
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.
Translation = recordarray {
Src, Dst;
"a", "A";
"A", "a";
};
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 = " ";
};
};
};
};
};