Tabulky programem Pilot-DB (2. část) - www.PalmHelp.cz

Článek do news mohou přidat registrovaní uživatelé PalmHelp. Zajímavé články odměníme.

 Tabulky programem Pilot-DB (2. část)

Autor: Morbid - 29.03.2005, 2151 čtenářů


Software Dnes se dostaneme k nejdůležitější vlastnosti a tím je možnost operací s jednotlivými hodnotami položek a to jak v jednom záznamu tak i mezi záznamy.
Stručně si projdeme argumenty, které lze ve skriptu použít.





Tabulka s výpočtem (script)


Nejdříve operátory (v závorce vždy příklad):
Libovolné číslo (3.2), desetinná čárka může být jak tečka tak i čárka, podle nastavení počítače.
Celé číslo (17)
Řetězec (Ahoj)
Čas (20:04), čas se udává ve 24hodinovém formátu a oddělený dvojtečkou.
Datum (8/5/05), měsíc lomeno den lomeno rok.
Odkaz na položku: %[int], asi nejdůležitější operátor, kde int je pořadové číslo položky.

Tyto operátory lze použít pro následující operace:
Matematické operace
Sčítání: + [a] ... [b]
Násobení: * [a] ... [b]
Dělení: / [a] ... [b]
Operace porovnání:
Shoda: eq [a] [b], vrátí pravda pokud se čísla schodují.
Menší než: lt [a] [b], vrátí pravda pokud a je menší b.
Vetší než: gt [a] [b], vrátí pravda pokud a je větší b.
Menší nebo rovno: le [a] [b], podobně výše.
Větší nebo rovno: ge [a] [b], podobně výše.
Operace s řetězci
Schoda řetězce: seq [a] [b], vrací pravda, pokud jsou řetězce schodné.
Částečná shoda: sstr [a] [b], vrací pravda, pokud [a] v sobě obsahuje [b].
Práce s časovými údaji:
Dnešní datum: gcd, výsledkem je aktuální datum.
Převod na celé číslo: int [a], převede čas, nebo datum na celé číslo.
Doba trvání: dur [a], celočíselná hodnota bude interpretována jako počet minut od půlnoci 1.1 1904 a bude zobrazena jako dny, hodiny a minuty.
Ostatní:
Negace: ![arg], obrací výsledek [arg], pravda/nepravda.
Podmínka: ? [test] [t] [f], pokud je [test] pravda, výsledek bude [t], jinak [f].
Větvení: br [b] [res-0] ... [res-n], [b] musí být typu integer (celé číslo). Pokud je [b] <= 0, bude výsledek [res-0], pokud je [b] >=n, bude výsledek [res-n], jinak bude výsledkem výraz v pozici dané [b] (pozice jsou číslovány od nuly).
Proveď vše: all [a] ... [n], provedete všechny argumenty a jako výsledek je předán výsledek posledního argumentu.
Logické Or: or [a] ... [n], výsledkem je 1 pokud jeden nebo více argumentů skončí s hodnotou pravda, jinak je výsledek 0.
Logické And: and [a] ... [n], výsledkem je 1 pokud všechny argumenty skončí s hodnotou pravda, jinak je výsledek 0.
Náhodné číslo: rand, vygeneruje celé (integer) náhodné číslo větší než 0.

Každý výpočet musí být i se svými operátory uzavřen do kulatých závorek. Teď si prohlédněte dva příklady:
Nejjednodušší je asi součet dvou položek: (+ %0 %1).
Složitější už je součet položky 0 a položky 1, která je vynásobena čtyřmi: (+ %0 (* %1 4)


Operace mezi záznamy
Nyní se podíváme na podivuhodnou vlastnost popisovaného programu. Výše jsme si popsali výpočty s položkami v jednom záznamu a nyní se podíváme na to, jak lze počítat i mezi jednotlivými záznamy. K výše uvedeným argumentům nám přibudou dva, určené právě pro operace mezi záznamy.
Přerovnání; sort [fld] [up?], [fld] je pořadové číslo položky, podle které bude prováděno řazení položek a druhý argument [up?] určuje, zdali bude řazení prováděno vzestupně (1) nebo sestupně (0).
Položka v záznamu: ffr [fld] [off] [d]; zde se určuje, s jakým záznamem budeme pracovat. První [fld] je číslo položky se kterou budeme pracovat, druhý [off] je tzv. offset záznamu, který určuje o kolik záznamů zpátky nebo dopředu je záznam, o který se zajímáme ve výpočtu. Pokud je vyplněn třetí argument [d], bude použita jeho hodnota, pakliže není nalezen odpovídající záznam (default).
Tyto dva argumenty se musí vždy, když budeme operovat mezi záznamy, vyskytovat za sebou. Zde je pro příklad takový skript:
(sort 1 1)(+ %0 (ffr 1 1))
Tento skript nejdříve srovná záznamy v databázi podle druhé položky (položka č. 1) a to vzestupně (od nejmenší po nejvyšší) a přičte k položce č. 0 obsah položky č. 1 v následujícím záznamu.

Příklad
Takto to vypadá velmi těžkopádně, proto si budeme muset vyzkoušet jednoduchou databázi.

Na prvním obrázku je vidět, jaký je potřeba vytvořit design databáze, na druhém je vidět skript pro výpočet (sort 0 1) (+ (? (seq (ffr 0 -1 na) %0) (ffr 2 -1 0) 0) %1). A na třetím obrázku je výsledek, kdy je zřejmé, že se sčítají jednotlivé hodnoty položky č. 1 pro jednotlivé osoby a to podle jména uvedeného v položce 0.
Nyní si pro lěpší pochpeníi podrobněji projdeme skript.
Nejdříve dojde k setřídění záznamů dle jména osoby (sort 0 1).
V takto setříděných záznamech pomocí (ffr 0 -1 na) zjistíme jméno osoby (pokud není nic tak bude "na") a to potom porovnáme se jménem v aktuálním záznamu (seq (ffr 0 -1 na) %0). A pokud souhlasí, dojde k sečtení obsahu položky č. 2 předcházejícího záznamu a obsahu položky č. 1 v aktuálním záznamu (+ (? (seq (ffr 0 -1 na) %0) (ffr 2 -1 0) 0) %1). Jak prosté.




Předchozí část článku: Tabulky programem Pilot-DB (1. část)
Následující část článku: Tabulky programem Pilot-DB (3. část)




 
   Související odkazy
· Více o tématu Software
· Další články od autora Morbid


Nejčtenější článek na téma Software:
Video pro Palm, zázrak jménem SmartMovie


   Hodnocení článku
Průměrné hodnocení: 4.8
Účastníků: 5

Výborný

Zvolte počet hvězdiček:

Výborný
Velmi dobré
Dobré
Povedený
Špatné


   Možnosti

 Vytisknout článek Vytisknout článek


Související témata

Software

"Tabulky programem Pilot-DB (2. část)" | Přihlásit/Registrovat | 10 komentářů | Vyhledávání v diskusi
Komentáře vlastní jejich autoři. Neodpovídáme za jejich obsah.

Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: goha - 11.04.2005
(O uživateli | Poslat soukromou zprávu)
Tak jsem si zkoušel pro začátek vyrobit databázi otevírací doby některých prodejen s PC. Vytvořil jsem zákl. databázi s názvem např. Otevírací doba a vytvořil příslušný dizajn: "Den" (pro zadávání dnů v týdnu: Po., Út., St. atd.), "Otevřeno" (pro zadávání hodin, např. 9-11 12-17), a Pozn. (jako textový řetězec).
Toto nastavení se vytvořilo pro "Všechny položky".
Potom si v Úpravě sestavy položek (All Fields) vytvořím nové dle prodejen, např. 100MEGA, INFOTECH a pod.
Když ale potom např. zvolím 100MEGA a začnu do ní zadávat otevírací dobu, např. např. 9-11 12-17, stejná doba se mi zobrazí i při otevření pole INFOTECH. Když v "INFOTECHU" zadám jiný čas, současně mi ho přepíše i u 100MEGA. Znamená to, že to nejde nijak ošetřit, aby se u každé prodejny zobzazoval jiný čas a musím proto pro každou prodejnu vytvářet celou novou databázi s identickým dizajnem, a nebo dělám něco špatně? Jak to tedy vyřešit, abych mě v jedné databázi "Otevírací doba" více prodejen s různými časy?
Snad jsem to vysvětlil srozumitelně.
Díky za radu (možno i na mail, abych se dozvěděl o odpovědi).
g.
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: Morbid - 12.04.2005
(O uživateli | Poslat soukromou zprávu) http://www.palmhelp.cz/html/modules.php?name=Content&pa=showpage&pid=21
 
Asi bych vytvořil jednu databázi kde budou pole prodejna a otvírací doba, případně ještě poznámka a pro každou prodejnu vytvořit potom zvlášť záznam.
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: goha - 12.04.2005
(O uživateli | Poslat soukromou zprávu)
 
No vida, možná jsem to dělal zbytečně složitě nad možnosti programu (spiše jsem ho ale špatně pochopil ja). Díky, vyzkouším a dám vědět.
g.
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: goha - 12.04.2005
(O uživateli | Poslat soukromou zprávu)
 
Tak takhle by to snad fungovalo, ale má to zase jinou vadu. Všechny sloupce musejí mít stejnou šířku :-(. Lzenějak změnit šířku sloupců, aby ji měl každý jinou, např. "Prodejna":80, "Otevřeno": 50 a pod.?
Díky g.
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: goha - 19.04.2005
(O uživateli | Poslat soukromou zprávu)
 
Hmmmm, nějak tady ta diskuze nefunguje:-((
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: Morbid - 22.04.2005
(O uživateli | Poslat soukromou zprávu) http://www.palmhelp.cz/html/modules.php?name=Content&pa=showpage&pid=21
 
Opravdu nemám čas sledovat diskuzi. Pokud chcete poradit skuste muj email michal.nosek@dece.cz
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: Morbid - 22.04.2005
(O uživateli | Poslat soukromou zprávu) http://www.palmhelp.cz/html/modules.php?name=Content&pa=showpage&pid=21
 
Měnit šířku lze v nastavení zobrazení vpravo nahoře kliknout na All Fields a dát Edit List Views... Jednak lze změnit šířku sloupce, ale také lze vytvořit další zobrazení. Někde taky lze zadat defaultní šířku sloupce při vytvoření nové databáze.
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: goha - 23.04.2005
(O uživateli | Poslat soukromou zprávu)
 
Díky za reakci. V pravo nahoře v All Fields to ale nejde, protože po vytvoření databáze tam není nic, co by se dalo editovat. Musí se založit nový List a ten lze teprve editovat, ale základní databáze s původně nastavenou šířkou sloupců tam vidět není. takže se musí "něco" vytvořit a to lze teprve upravovat.
Přesto díky g.
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: Morbid - 28.04.2005
(O uživateli | Poslat soukromou zprávu) http://www.palmhelp.cz/html/modules.php?name=Content&pa=showpage&pid=21
 
No vida, už to umíte :-)
Re: Tabulky programem Pilot-DB (2. část) (Hodnocení: 1)
Od: goha - 28.04.2005
(O uživateli | Poslat soukromou zprávu)
 
Je to ale škrábání levou rukou na pravem uchu :-(. Proč ta zákl. databaze nejde editovat (šířka sloupců)? Já vím, asi mi odpovíte: "Já ten program nedělal". Proto to prosím berte jen jako jakési "povzdechnutí".

Reklama / Ceník
Vstup pro inzerenty




 


Doporučte nás | Webmaster | Hledání | Statistiky | Syndikační kanály | Právní ujednání | Ochrana osobních údajů



PalmHelp (www.PalmHelp.cz), informace nejen ze světa webOS a Palm OS, asistenční služby uživatelům produktů Palm. ISSN 1801-9412