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]