Promotic
WikipediaLinkedInYoutubeTwitterFacebook

LoadFromFile - metoda objektu PmaDataTable

Popis:
Načtení dat pro tento objekt ze souboru typu INI nebo CSV.
Syntaxe:
Boolean LoadFromFile(String sFile, String sParams)
Volání:
b = oDataTable.LoadFromFile(sFile, sParams)
Parametry:
sFile(String) Název souboru s cestou, ze kterého se mají data načíst. Soubor nemusí mít příponu "ini" nebo "csv", typ souboru se určuje podle zadaného parametru filetype.

Pokud není zadána celá cesta, pak se doplní relativně k souborové složce aplikace. Je doporučeno použít cestu v syntaxi PROMOTIC - viz PROMOTIC cesta k souborům nebo složkám.

sParams(String) Dodatečné parametry definující způsob čtení ze souboru. Údaje jsou zde ve formátu KeyVal, například "filetype:ini;fmt:trans;rowname:boiler;".
"filetype:xxx;" (povinné) - Určuje typ souboru definovaný parametrem sFile
ini - typ je INI soubor.
csv - typ je CSV soubor. Je to víceřádkový soubor textových hodnot například oddělené středníkem. Je běžně využívaný například v programu MsExcel.
"fmt:xxx;" (nepovinné) - Určuje formát uložených dat v daném souboru. Pokud není nastaveno, pak se předpokládá hodnota "fmt:standard;". Jsou možné tyto formáty:
standard - Význam závisí na typu souboru:
csv - Hodnoty v řádcích CSV souboru jsou uloženy na odpovídající řádky v tabulce
ini - Sekce INI souboru jsou názvy řádků a klíče INI souboru jsou názvy sloupců tabulky. Příklad:
[r0]
colname1=boiler1
colname2=boiler2
[r1]
colname1=12
colname2=15
trans - Sekce INI souboru jsou názvy sloupců tabulky a klíče INI souboru jsou názvy řádků. Příklad:
[colname1]
r0=boiler1
r1=12
[colname2]
r0=boiler2
r1=15
"rowname:xxx;" (nepovinné) - (pouze pro INI) Určuje název řádku. Pokud není nastaveno, pak se předpokládá hodnota "rowname:r;". Název řádku se vytvoří tímto textem doplněným o index řádku, například pokud "rowname:rrr;", pak názvy řádků budou "rrr0", "rrr1", atd.
"colnameheader:xxx;" (nepovinné) - (pouze pro CSV)
no (přednastaveno) - už v prvním řádku souboru jsou uložena data.
yes - v prvním řádku v souboru nejsou data ale názvy jednotlivých sloupců.
"delimiter:xxx;" (nepovinné) - (pouze pro CSV) Oddělovač hodnot v CSV souboru. Povolené hodnoty jsou:
semicolon (přednastaveno) - odddělovač je středník.
comma - odddělovač je čárka.
space - odddělovač je mezera.
tab - odddělovač je tabulátor.
number - tzn. oddělovač je zadán dekadickým číslem ASCII znaku, například "delimiter:124;" znamená oddělovač "|" (vertikální čára).
"date.fmt:xxx;" (nepovinné) - Formát datumu a času. Povolené hodnoty jsou:
system (přednastaveno) - formát datumu a času je určen nastavením OS Windows (např. 22.11.2010 16:30:15).
pm - PROMOTIC formát datumu a času na celé sekundy (např. 2010.11.22 16:30:15).
pmmili - PROMOTIC formát datumu a času - přesnost 10 ms (např. 2010.11.22 16:30:15.250).
real - formát datumu a času datového typu Date typu reálné číslo (např. 41392.123456789).
"real.dsep:xxx;" (nepovinné) - (pouze pro CSV) Formát desetinného oddělovače u reálných čísel. Povolené hodnoty jsou:
system (přednastaveno) - desetinný oddělovač je určen nastavením OS Windows (např. 3,14).
dot - desetinný oddělovač je (bez ohledu na nastavení OS Windows) tečka (např. 3.14).
comma - desetinný oddělovač je (bez ohledu na nastavení OS Windows) čárka (např. 3,14).
"lastcolsep:xxx;" (nepovinné)
yes - Při zápisu se přidá separátor za poslední hodnotou na řádku, při načtení se prázdná hodnota na konci každého řádku ignoruje. Z hlediska CSV souboru to není správně.
no (přednastaveno) - Separátory jsou jenom mezi hodnotami na řádku a nikoliv na konci řádku. Z hlediska CSV souboru je toto správně.
Vrácená hodnota:
true - Načtení proběhlo v pořádku (do tabulky byla načtena alespoň jedna hodnota)
false - V jiném případě
Poznámka:

Tato metoda nemění počet a názvy sloupců a je tedy důležité při volání této metody mít sloupce nastaveny (např. v záložce "Sloupce" nebo metodou InsertCol).

Metoda načítá ze souboru data a ukládá je na existující řádky v tabulce (od začátku tabulky). Pokud je v souboru více řádků než v tabulce, pak počet řádku v tabulce se zvětší na příslušný počet. Načítat data lze tedy například i do tabulky, která nemá žádný řádek. Při načítání se však nesmí přesáhnout maximální počet řádků, který je zadaný v konfigurační záložce DataTable.

Načítání ze souboru se provádí po řádcích nebo po sloupcích (dle parametru "fmt"). Pokud se narazí na konec řádku/sloupce, pak se přechází na následující. V souboru tedy nemusí být uloženy všechny hodnoty řádku/sloupce.

Sloupce "Jen pro čtení" (ReadOnly): Každá buňka je na začátku prázdná. Za prázdnou se považuje i buňka obsahující číselnou hodnotu 0 nebo prázdný řetězec "". Do takové buňky lze zapsat novou hodnotu. Po zápisu neprázdné nenulové hodnoty ve sloupci "Jen pro čtení" dochází k "zamčení buňky". "Zamčená buňka" se stane konstantou, nelze už do ní psát. Do ostatních "nezamčených" buněk však lze dále psát. U metod, které zapisují do více buněk, se zapíše pouze do "nezamčených buněk", obsah "zamčených buněk" zůstane beze změny.

Příklad1:
Nastavení objektu z konfiguračního CSV souboru CfgData.csv uloženého ve složce aplikace. Oddělovač hodnot bude středník, desetinný oddělovač reálných čísel bude tečka a formát datumu bude v PROMOTIC systémovém tvaru.
JavaScriptVBScriptVyber a zkopíruj do schránky

oDataTable.LoadFromFile("#app:CfgData.csv", "filetype:csv;colnameheader:no;delimiter:semicolon;real.dsep:dot;date.fmt:pm;");
Příklad2:
Nastavení objektu z konfiguračního INI souboru CfgData.ini ve složce aplikace.
JavaScriptVBScriptVyber a zkopíruj do schránky

oDataTable.LoadFromFile("#app:CfgData.ini", "filetype:ini;rowname:boiler;");

Historie:
Pm8.03.15: Opravená chyba: metoda někdy selhala při načítání prázdného CSV souboru.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice