VFP 5.0 SP3, VFP 6.0 SP3 / SP4 Problém: -------- U aktualizačních pohledů na vzdálená data ve kterých jsou memo pole a vypočítané sloupce se po provedení příkazu REFRESH() přesunou hodnoty v MEMO položkách. To znamená, že poslední MEMO pole obsahuje nulový řetězec, předposlední MEMO pole obsahuje hodnotu z posledního MEMO pole atd. Příznaky: --------- Pohled v DBC konteineru: Po otevření pohledu se pro vypočítaný sloupce do vlastnosti UpdateNameList vygeneruje text (pro vyp. sloupec XX000+XX001 AS XX0021) - XX0021 , Pohled přes SPT: Po nastavení vlastnosti UpdateNameList se pro vypočítaný sloupce do vlastnosti UpdateNameList vygeneruje text (pro vyp. sloupec XX000+XX001 AS XX0021) - XX0021 XX0021, Řešení: ------- U pohledů v DBC konteineru stačí provést editaci pohledu a uložit. U pohledů definovaných pomocí SPT lze sloupce složených z více hodnot/funkcí přesunout až na konec seznamu SELECT nebo pro složené sloupce definovat záznam do vlastnosti UpdateNameList tak, aby odpovídal pravidlům. JE TEDY NUTNÉ ZAHRNOUT DO VLASTNOSTI UpdateNameList I TY SLOUPCE JEŽ SE NEBUDOU AKTUALIZOVAT NA DATOVÉ STRANĚ (help ovšem říká něco jiného - jen to co se bude aktualizovat). Pravidla pro vytvoření záznamu do vlastnosti UpdateNameList pro vypočítané sloupce: ----------------------------------------------------------------------------------- Pro pohled (korektní) v DBC konteineru se po otevření pohledu pro vypočítaný sloupce do vlastnosti UpdateNameList vygeneruje text (pro vyp. sloupec XX000+XX001 AS XX0021) - XX0021 XXT000.XX001*, . Přičemž položka před hvězdičkou je ta, která je před vypočítanou položkou v seznamu SELECT. (SELECT XX0001,XX000+XX001 AS XX0021.... pak UpdateNameList=> XX001 XXT000.XX001, XX0021 XXT000.XX001*). Pokud je vice vypočítaných sloupců za sebou, pak: První vypočítaný sloupec bere jako zdroj sloupec před sebou. Druhý vypočítaný sloupec bere jako zdroj nejbližší nevypočítaný sloupec za sebou. Třetí vypočítaný sloupce bere jako zdroj nejbližší nevypočítaný sloupec před sebou (zde se místo jedné * objeví ***). Postřehy: --------- Tato chyba vzniká špatným vygenerováním vlastnosti UpdateNameList při otevření pohledu (USE) nebo při ručním nastavení vlastnosti UpdateNameList je-li seznam nekompletní (VFP si pak zbytek domyslí - jak už to většinou bývá, tak blbě). Upozornění: u sloupců složených z více hodnot/funkcí je vlatnost Updatable=.F. (což je správně - týká se pohledů v DBC konteineru). Vlastnost UpdatableFieldList určuje, které sloupce se budou aktualizovat na datové straně. Otázka zůstává proč funkce REFRESH() využívá vlastnost UpdateNameList. Pokud alias vypočítaného sloupce není uveden, VFP si jej sama vymyslí. Postup vytvoření nekorektních pohledů v DBC konteineru (XXV0000/XXV0000_000/XXV0000_003): ----------------------------------------------------------------------------------------- 1) Spojení na vzdálená data je již vytvořeno 2) Vyberte z menu volbu "New Remote View" 3) Vyberte všechny položky 4) Přidejte vypočítanou položku ( třeba: "{fn left(xx001,3)} AS xx001_x") a posuňte ji do prostřed seznamu 5) Uložte pohled Spuštění ukázkové aplikace: --------------------------- Ukázková aplikace se spouští spuštěním programu MAIN.prg . Na jednotlivých formulářích je editbox pro zobrazení obsahu vlastnosti UpdateNameList.