Z Vašeho popisu mi není schéma databáze úplně jasné, ale mám pocit, že s návrhem databáze není všechno úplně v pořádku.

Nicméně pro dynamický výběr dat můžete použít parametrický dotaz. Příklad:

SELECT okres, pocet_obyvatel, rozloha FROM okresy WHERE kraj = :kraj;

nebo

SELECT okres, pocet_obyvatel, rozloha FROM okresy WHERE kraj = [kraj];

:kraj resp. [kraj] představuje parametr. Správná funkční syntaxe může záviset na použitém databázovém stroji.

Takto zadaný dotaz se při spuštění zeptá na parametr kraj. Pokud parametrický dotaz použijete v podřízeném formuláři můžete parametr kraj vázat na pole kraj z nadřízené tabulky. Při změně změně záznamu v hlavní tabulce se dotaz přepočítá a v podřízeném formuláři se zobrazí správná data. Dotaz pochopitelně může mít více parametrů.

Nakolik jsem pochytil schopnosti OOo Base, jsou editovatelné pouze výběrové dotazy založené na jedné tabulce. Vaše podřízená tabulka C tedy asi editovatelná nebude, protože dotaz bude zřejmě zahrnovat více tabulek.

Zdravím,

Jiří Spitz

Dne 30.1.2011 23:48, Zbyněk Burget napsal(a):
Zdravím ještě jednou,
ještě jsem při práci s OOo 3.2.1 Base narazil na několik pro mne zatím neřešitrelných problémů. Potřebuji do jednoho formuláře, přesněji na jednu stránku dostat následující:
Mám tří na sobě závislé tabulky na A závisí B, na B závisí C.
Data se budou zobrazovat v ovládacích prvcích "Tabulka".
Potřebuji, aby byla zobrazena data z tabulky A, v závislosti na vybraném záznamu v A budou zobrazena data z tabulky B - tedy klasický podformulář (tady problém není). S daty z tabulky C mám ale trochu problém - potřebuji, aby se zobrazily všechny záznamy, které odpovídají aktuálnímu záznamu v tabulce A, tedy všem, které aktuálně vidím v tabulce B. Nemůžu tedy udělat C jako podformulář B (zobrazovaly by se pouze záznamy odpovídající aktuálnímu záznamu v B), nemůžu ale ani udělat C jako podformulář A, protože C na A přímo nezávisí (nebo aspoň nevím, jak ho udělat. Moje představa je taková, že budu mít na jednom listu druhý hlavní formulář (což samo o sobě není problém), je ale zapotřebí, aby z něj byla vyfiltrována přílušná data - tedy záznamy závislé na všech záznamech v B, které jsou závislé na aktuálně vybraném záznamu v A. Pomocí SQL dotazu dokážu data vyfiltrovat, pokud ale formulář založím na dotazu, nepůjde tabulka editovat, což by bylo žádoucí. Druhý problém je, že filtr, kterým budu vybírat data to tabulky C se musí dynamicky změnit, pokud se v tabulce A posunu na jiný záznam. Z logiky takto řešeného problému vyplývá, že v záznamu v tabulce C budu muset vyplnit, ne kterém záznamu z B je závislý. K tomu by měl sloužit ovládací prvek (sloupec v tabulce) typu seznam. A zde potřebuji, aby se zobrazovaly pouze záznamy, které aktuálně vidím v tabulce B. Zde jsem narazil na dva problémy: 1. jak do podmínky dotazu, který vytváří seznam (založený na SQL [nativní]), dostat položku z aktivního záznamu zobrazeného v tabulce A 2. jak při změně záznamu v tabulce A donutit ovládací prvek seznamu z tabulky C, aby položky seznamu přepočítal. Podle mnou pozorovaného chování bych řekl, že se položky seznamu vygenerují pouze jednou při otevření formuláře a pak se již nemění.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Odpovedet emailem