-
MS ACCESS
Mám utvořený formulář pro zobrazování a aktualizaci dat vybrané tabulky. Data bych v něm chtěl mít setříděné jinak než je hlavní klíč. Zkouším dát vlastnosti formuláře a zde vybírám záložku "Datové" a v něm je možnost "řadit podle", zde vepíšu jméno pole zobrazované tabulky podle, kterého chci mít setříděno a nic. Jako by se někde ještě muselo zapnout prováděj řazení podle údaje ve formuláři a ne podle hlavního klíče. Ale kde ?
-
Řešení
No určitě toto není to pravé řešení, ale funguje.
Ve spuštěném formuláři dejte "Seřadit" z nabídky menu.
Pak již do vlastností můžete napsat podle čeho chcete řadit Vy (tabulka.pole), a bude to fungovat (mně to alespoň funguje).
Proč se to neseřadí ihned bez "aktivace" řazení přes menu nevím, ale dělá mi to také. (Když jsem vzal dva stejné formuláře, kde řazení funguje a kde ne, ve vlastnostech jsem neviděl rozdílu...)
Honza
-
Skáču z jedné tabulky do druhé a pořád bych musel dávat v menu šeřadit. Kniha hovoří, že by to mělo fungovat po aktivaci OrderBy. Více neuvádí. Ten lze aktivovat prý v makru. Tak uvažuji, že se s otevřením formuláře budu aktivovat makro, které provede třídění ale to se mi zdá být velice kostrbaté. Někde to musí mít být ošetřeno ale kde ? Napadá mne místo otevírání tabulky otevírat dotaz. Ten má v sobě pole setřídit a tím by to bylo zpracováváno v pořadí zadaném a volitelném v dotazu. To ale znamená překopat celou filosofii. Já jsem dosud nerozlouskl jednu základní věc a to zobrazit detail nějakého záznamu. Budu mít například tabulku PRACOVNICI a věta bude mít 30 polí. Já si utvořím formulář, který bude mít zdroj dat PRACOVNICI a bude věty vypisovat věty ve formě datovélo listu se dvěma poli PRACOVNICI.JMENO a PRACOVNICI.PRIJMENI. Tím se mi krásně bude procházet v seznamu a když na řádku stisknu Enter nebo kliknu myší chci zobrazit jiný formulář zobrazující detailně tutéž větu na které jsem stál. A já neumím předat tomuto formuláři údaj kterou větu má vyobrazit. Půjčil jsem 4 knihy k accessu a o tom ani ťuk. Buď je to tak stupidní, že se jim o tom nechce psát a nebo to tají. Kdo je ochoten prozradit toto tajemství ? ;D
-
Teď přesně nevím, kde je problém...
Po PRVNÍ "aktivaci" ve formuláři seřadit je tato "aktivována" napořád.
I když přidám nové záznamy, setřídí se v definovaných formulářích bez nutnosti řadit OPĚTOVNĚ volbou z menu
I když v této fázi změním řazení ve vlastnostech formuláře z PRACOVNICI.PRIJMENI na PRACOVNICI.RC, funguje to ihned bez nutnosti dalšího zásahu z menu...
H.
-
...
Co se týče procházení s následným otevřením dat ve druhém formuláři
Předpoklad: form1 s běžným procházením obsahuje tlačítko "Zobraz podrobnosti" (pravděpodobně by to šlo i navázat na běžnou akci kliknutí myši na poli - nezkoumal jsem)
Toto tlačítko ve vlastnosti Click obsahuje událostní proceduru
DoCmd.OpenForm "Form2"
Form2 bude tedy obsahovat zbylá pole. Bude mít povoleno pouze formulářové zobrazení, zakázáno přidávat data atp. Zdrojem záznamů bude definovaný dotaz, který si předtím vytvoříme:
Příklad dotazu SQL:
Select Pracovnici.ID, Pracovnici.Prijmeni, Pracovnici.Jmeno FROM Pracovnici Where Pracovnici.ID = [Forms]![Form1]!ID;
Kde ID je nejlépe hlavní klíč (záruka jedinečnosti a rychlosti vyhledání)
Form1 tedy musí obsahovat pole ID, které samozřejmě můžeme zneviditelnit
H.
-
Mám tři tabulky. TABULKA1 je v relaci 1:N s TABULKOU2. TABULKA2 je v relaci 1:N s TABULKOU3. V jednom formuláři zobrazuji údaje ze všech třech tabulek najednou. Použil jsem propojené podformuláře. Takže když vyberu někaký záznam v TABULCE1 automaticky se mi vypíšou všechny záznamy v relaci v TABULCE2 a k ní všechny záznamy v relaci v TABULCE3. Problém je, že záznamy v TABULCE2 a 3 jsou seřazené podle ID a ne podle jiného pole nebo klíče. Když dám přes menu setřítit tak to vydrží pouze do té doby dokud v TABULCE1 nevyberu jiný záznam.
-
Relace
tak s tím zkušenosti nemám...
"Skutečné" relace jsem naposledy používal ve FoxPro pro DOS, kde z principu musela být databáze indexována podle klíče relace.
V MS Access jsem již používal pro (například) podformuláře dotazy v závislosti na výběru z (například) seznamu, kde po události "změna výběru" jsem použil na podformuláře prosté Requery a data byla v pořadí požadovaném SQL dotazem
(Teď již Access nepoužívám, takže nevím. Pokud je ale ve vlastnosti podformuláře nastaveno řazení, zkusil bych použít po změně výběru na podformulář Requery - ale zda to bude fungovat na propojených podformulářích... , spíš ne...)
H.