Dnes: 18. ledna 2018    | Registrace | Hledáme | Redakce | Info | Testy | Školení | Ocenění | Nápověda | Čtenář: nepřihlášen

Rychlé odkazy
  • Hlavní stránka
  • Seznam rubrik
  • Ankety
  • Editoriály
  • TOP 15
  • KONFERENCE 2008
  • KONFERENCE 2007
  • KONFERENCE 2006
  • KONFERENCE 2005
  • KONFERENCE 2004
  • Sborník
  • Testy
  • Virtuální školení
  • Personalizace


  • Hledáte práci?
    Hledáme redaktora - pojďte s námi tvořit Databázový svět!

    Vyhledávání

    Hledej
    na Databázovém světě!



    Rozšířené vyhledávání

    Rubriky
    Aktuality
    Bezpečnost
    Business
    Česká scéna
    Datové sklady
    Dokumentace
    Dotazovací jazyky
    Hardware
    Historie
    Komentáře
    Literatura
    Metodologie
    Nondb
    Open Source
    Poradna
    Produkty
    Případové studie
    Redakce
    Rozhovory
    Standardy
    Technologie
    Tipy - triky
    Tiskové zprávy
    Vývoj
    Vývojové nástroje
    Zajímavosti

    Co je to?
    Konkurenční přístup
    Situace, kdy k jednomu zdroji dat (nejčastěji stejným záznamům v tabulce) přistupuje současně více uživatelů. Jedním z úkolů vyspělého SŘBD je zajistit, aby nedošlo k porušení konzistence dat (například aby uživatel z tabulky četl vždy aktuální data).

    Akce
    Dynamická Datová Centra
    - na semináři se seznámíte s komplexním řešením a koncepcí Dynamických Datových Center od Fujitsu Siemens Computers se speciálním důrazem na řešení FlexFrame.

    Textová inzerce
    IBPhoenix - Vše o InterBase a Firebirdu.

    Smějete se rádi? - Pak je pro vás Vtipník to pravé!

    Prodejce reklamy - Hledáme schopného prodejce reklamního prostoru, možnost i externí spolupráce.

    Přihlášený čtenář
    Nepřihlášený čtenář

    O portálu
    Databázový svět
    ISSN: 1213-5933

    Web je optimalizován pro rozlišení 1024x768, nicméně kromě větších rozlišení podporujeme i 800x600. Podrobnosti najdete zde.

    Chcete-li mít kdykoliv možnost zkontrolovat obsah našeho portálu, můžete využít podporu rss. Podrobnosti najdete zde.
    Mřížka ve FoxPro poosmé


    [Vývoj] - V seriálu Mřížka ve FoxPro se v necelé desítce pokračování věnujeme problematice gridu – tedy mřížky – ve stále velmi populární databázové a vývojové platformě. Charakteristické pro celý seriál je orientace na praktické příklady. V posledním pokračování se zaměříme na řešení nejčastějších problémů.



    Když se ztrácí obsah mřížky po příkazu PACK
    Jedna z nejčastějších operací nad mřížkou je použití příkazu PACK nad exkluzivně otevřenou tabulkou. Začátečníci jsou obvykle překvapeni, že po této operaci v mřížce nejsou vidět sloupce. Existují dva triky, jak tomu zabránit – použít příkaz ZAP nebo před použitím příkazu ZAP nastavit vlastnost RecordSource na prázdný řetězec (viz Dynamické generování mřížky).

    Když se ztrácí obsah mřížky
    Občas se stane, že data nejsou v mřížce zobrazena, i když se zdá, že zdroje dat byly korektně přiřazeny jak mřížce, tak i sloupcům. Obvykle to mohou být tyto důvody:

    • V ControlSource je použito klíčové slovo This. VFP jej totiž jinak vyhodnocuje když je buňka aktivní (This reprezentuje odkaz na aktivní objekt určený vlastností CurrentControl/DynamicCurrentControl) a když není aktivní (This reprezentuje odkaz na mřížku) – příklad grid_80.scx.
    • U VFP 6.0 a vyšší se při dynamickém generování mřížky není před přiřazením zdroje dat mřížky aktivní oblast zdroje dat.
    • Položka nebo funkce přiřazená do vlastnosti ControlSource neexistuje, viz. grid_81.scx.

    Když se ztratí obsah vlastnosti ControlCource sloupce
    Při změně vlastnosti RecordSource na mřížce VFP automaticky vymaže obsah vlastnosti ControlSource všech sloupců. Dá se tomu předejít dvěma způsoby. Použije se utilita na vyhledání a záměnu řetezce (GoFish, Search And Replace, Code References) nebo se záměna provede ručně.

    • Otevře se formulář jako tabulka: USE myform.scx
    • Najde se požadovaný záznam mřížky (nejlépe dle názvu objektu a nadřazeného objektu): LOCATE FOR OBJNAME='mujgrid' AND PARENT='myform'
    • Otevře se memo pole PROPERTIES, najde se řádek s přiřazením vlastnosti RecordSource a změní se na požadovanou hodnotu
    • Uzavře se tabulka: USE

    Když se při použití relací nebo dohledávání zobrazuje stejná hodnota
    Ačkoliv se relace nebo příkazy SEEK() a LOCATE používají pro dotažení hodnot z dalších tabulek, stane se občas, že mřížka zobrazuje stejné hodnoty.

    Jako 100% ukázkový příklad poslouží grid_73.scx, kde se při pohybu po hlavní mřížce zobrazí stejný popis v podřazené mřížce předchozí věty.

    Někdy tatáž situace nastane i jednoduchého gridu a to ještě náhodně. Existuje pouze jedno řešení – přehrát data z více tabulek do pracovního kurzoru, ať s použitím smyčky SCAN ... ENDSCAN nebo SELECT – SQL a ten potom použít jako zdroj dat pro mřížku.

    Rushmore? Kde té je konec … (pro VFP 3.0-VFP 8.0)
    Mřížka není seznam, ačkoliv to na první pohled není vidět, nemá odpovídající vlastnost ke klíčovému slovu FOR a tudíž nepodporuje technologii Rushmore. Pokud se použije příkaz SET FILTER TO na filtrovaní dat, pak je při filtrování menšího množství dat z většího pohyb v mřížce velmi pomalý.

    Při filtrování dat dle indexového klíče lze použít příkaz SET KEY TO (od FP 2.6), jinak je nutné použít SELECT – SQL pro vytvoření pracovního kurzoru nebo tabulky.

    Mřížka má ale ve VFP 9.0 novou vlastnost Optimize, která udává, zda se má použít Rushmore technologie (.T.) či ne (.F.), se všemi neduhy které s tím souvisí.

    Například při vyfiltrování 2 vět z 3,775,113 příkaz GO TOP trvá 32 vteřin, LOCATE FOR .T. trvá 0.8 vteřiny, ale při použití SET KEY TO je vykonání obou příkazů téměř neměřitelné.

    Když se objeví hláška "Record is not locked"/"Záznam není uzamčen"
    Příkladem je grid_82.scx, kde je hlavní a podřazená mřížka. Popis z tabulky XXT900 se dohledává pomocí metody (SEEK()) na formuláři. Při pokusu klepnutí na sloupec "Ano/Ne" v podřazené mřížce se objeví chybové hlášení.

    Řešením je nahradit dohledávání pomocí relace, vytvořením pracovního kurzoru nebo tabulky.

    Když se objeví hláška "The control is read-only"/"Ovládací prvek je určen ke čtení"
    Příkladem je grid_83.scx, kde je hlavní a podřazená mřížka. Data v podřazené mřížce jsou jen ke čtení (netýká se 2. a 3. sloupce), i když je mřížka ve visuálním návrhu nastavena k zápisu.

    Při pokusu o zápis do 1. a 4. sloupce se zobrazí chybové hlášení, tedy pokud je nastaveno SET NOTIFY ON. Je to dáno tím, že jako zdroj dat sloupce je uvedena položka bez aliasu tabulky a současně není tento alias vybrán jako aktuální.

    Ačkoliv má druhý sloupec definován jako zdroj sloupce pouze položku – bez aliasu tabulky - a zároveň se pro zobrazení hodnoty používá výběrové pole nebo skupinu voleb, není tento sloupec jen ke čtení.

    Když si ukazatel mřížky skáče kam chce
    Příkladem je grid_84.scx, kde je hlavní a podřazená mřížka. Tentokrát jsou místo tabulek použity kurzory (je jedno zda jsou vytvořené příkazem CREATE CURSOR nebo pomocí SQLEXEC()).

    Kurzory "DataMain" a "DataTest" jsou spojené relací, popisy se z číselníku získávají pomocí metody na formuláři (SEEK()).

    Při klepnutí na první řádek podřazené mřížky se zdá, že je všechno v pořádku. Avšak při klepnutí na druhý řádek sloupce "Ano/Ne" se objeví navíc čtvrtý řádek a pole ve sloupci je také zatrhnuté.

    Jediné řešení, na které jsem narazil, bylo nahradit relaci příkazem SET FILTER TO nebo SET KEY TO či popis získávat pomocí relace.

    A co Object manager internal consistency error?
    Příkladem je grid_85.scx, kde v mřížce se zobrazuje memo pole. Ovšem aby se místo textu "Memo"/"memo" zobrazil text, používá se jeden trik.

    Jako zdroj dat se název memo pole uzavírá do závorek: ControlSource="(memo_pole)". Tento způsob má však jednu nevýhodu – pokud je hodnota .NULL., dojde k vyvolání výše uvedené chyby při pohybu po mřížce. Té se dá předejít několika způsoby:

    • ControlSource="ALLT(memo_pole)"
    • ControlSource="NVL(memo_pole,'')"
    Stačí tedy memo pole nevracet jako nepřímý výraz, ale zapouzdřit jej nějakou funkcí dle potřeby.


    Související články:
    Mřížka ve FoxPro posedmé (11.07.2005)
    Mřížka ve FoxPro pošesté (04.07.2005)
    Mřížka ve FoxPro popáté (28.06.2005)
    Mřížka ve FoxPro počtvrté (15.06.2005)
    Mřížka ve FoxPro potřetí (06.06.2005)
    Mřížka ve FoxPro podruhé (24.05.2005)
    Mřížka ve FoxPro poprvé (17.05.2005)

    ( Celý článek! | Autor: Martin Jindra | Počet komentářů: 0 | Přidat komentář | Informační e-mailVytisknout článek )

    Vyhledávání
     

    Anketa
    Kolik ročně utratíte za dovolené?

    Nic 
     (1548 hl.)
    Do 1 000,- Kč 
     (1068 hl.)
    Do 10 000,- Kč 
     (999 hl.)
    Do 25 000,- Kč 
     (1378 hl.)
    Do 50 000,- Kč 
     (1016 hl.)
    Do 75 000,- Kč 
     (1178 hl.)
    Více než 75 000,- Kč 
     (1019 hl.)

    Celkem hlasovalo: 8206


    Poslední komentáře
    frontierd@126.com
    frontierd@126.com
    frontierd@126.com
    c
    http://www.coachoutl

    Newsletter
    Přihlaste si nezávazně - i bez registrace - odběr informačního newsletteru. Podrobné informace najdete zde.

    Emailová adresa:


    Kalendář
    <<  Leden  >>
    PoÚtStČtSoNe
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    

    Redakci připojuje


    Nejčtenější

    Databáze je prázdná!


    Nejvíce komentářů

    Databáze je prázdná!


    Reklama






    Nenechte si ujít články na dalších webech




    Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
    nebo registrovanými ochrannými známkami příslušných vlastníků.

    Databázový svět | dfKlub - digitální fotografie | Vtipník - vtipy přímo k Vám | Reminder - přestaňte zapomínat | Databázový svět

    Copyright (c) 2004 AVRE Publishing, spol. s r.o. Všechna práva vyhrazena