Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 17. 12. 2015 22:15:16

marian86
Člen
Registrace: 17. 12. 2015
Příspěvků: 2

Formulár

Chcel by som Vás požiadať o radu, pretože sa neviem pohnúť.
Vytvoril som si dve databázy.
Prvá je databáza krajín s údajmi: ID krajina-prim. kľúč, názov krajiny, medzinárodná skratka, tel. predvoľba.
Druhá databáza zákazníkov: ID zákazníka-prim. kľúč, firma, adresa, tel., e-mail, názov krajiny, ID krajina, kontaktná osoba,....
Cez vzťahy som si prepojil ID krajina (databázy krajín) a ID krajina (databáza zákazníkov).
Následne som si vytvoril formulár s údajmi z databázy zákazníkov (firma, adresa, tel. e-mail). Vo formulári som vytvoril rozbaľovacie pole (resp. Kombinované pole) pre názov krajiny z databázy krajín. Keď som vybral krajinu v rozbaľovacom poli, tak to automaticky zapisovalo do poľa Názov krajiny v databáze zákazníkov.
Do formulára som si pridal polia z databázy krajín - medzinárodná skratka, tel. predvoľba. V týchto poliach mi ale nezobrazovalo žiadne údaje hoci som skúšal viac spôsobov aj vytvorenie podformulára.
Prosím o radu ako to urobiť, aby mi do týchto polí naťahovalo údaje podľa zvolenej krajiny.
Ak niekto vie ako sa to dá, budem rád ak mi poradí.

Offline

#2 18. 12. 2015 08:52:16

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Formulár

Jestli tomu dobře rozumím, tak máte hlavní databázi "zákazníci" (klienti). Jedno z polí záznamů této hlavní databáze, respektive "sloupec hlavní databáze" je "krajina" která je prázdná dokud neuděláme výběr? Nebo je to země kde bydlí? (Nevím oč jde, ale běžně si cestovky nechávají staré záznamy podle kterých později nabízejí lokalitu stejnému klientovi. Pak by šlo ale o nový záznam stejného klienta. Je otázka zda se přídá k hlavní databázi, nebo do nějaké třetí.)


     Ve formuláři požadujete aby se místo "pole" krajina zobrazil seznam s výběrem země. Následně po výběru ze závislé tabulky (krajina) se má výběr zapsat do hlavní databáze?


     Chápu, že chcete dva seznamy, kde v jednom je klient a ve druhém země. Ve formuláři pak všechny údaje klienta ale do pole "krajina" (sloupce databáze) má být vložen výber se seznamu zemí, nebo tam už nějaký záznam bude?
     No a co potom? Kam a nebo jak se výběr zapíše? Formulář výběry zobrazí, ale nic víc. Dá se čekat požadavek na zápis do nejaké další databáze (například nabídky), nebo má být upravena ta původní hlavní databáze? Je tam potřeba vybrat a pak něco stisknout a tím něco udělat. To asi bez dotazu, respektive makra zřejně nepůjde.


     Pokud jde jen o zobrazení tak není problém vypsat všechna pole podle výběru "klientů" a nezávisle na tom vypsat podle výběru všechna pole vybrané "ktajiny". To může být provedeno jako "podformulář", ale pokud je výběr shodný s celou databází "krajin" je to nesmyslné. Prostě něco tomu schází. Mám poměrně dost vzorů, které by uměly to co potřebujete. Jsou tam často makra. Popište lépe co se má stát po vybrání a já Vám něco postavím nebo pošlu cizí vzor.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 19. 12. 2015 20:20:16

marian86
Člen
Registrace: 17. 12. 2015
Příspěvků: 2

Re: Formulár

Ďakujem za reakciu na moju správu.
Mám dve databázy, hlavnú Zákazníci a druhú Krajiny. Pri zadávaní údajov o zákazníkovi vo formulári chcem, aby som si mohol krajinu zvoliť z rozbaľovacieho poľa. Vybraná krajina z databázy Krajiny sa potom zapíše do poľa Krajiny v databáze Zákazníci. S týmto nemám problém, to mi funguje.
Problém mám s tým, že ak vyberiem krajinu z rozbaľovacieho poľa, tak chcem aby mi zobrazilo ostatné údaje z databázy Krajiny ako napr.: tel. predvoľbu, skratku, medzinárodný názov.
Pre prehľadnosť posielam link na databázu:
http://ulozto.sk/xEwcGA7U/kontakty-01-odb
Vedľa poľa krajina je pole Tel. predvoľba kde by som chcel aby sa zobrazovali údaje k príslušnej krajine podľa databázy krajín. To ale nefunguje.

Offline

#4 20. 12. 2015 17:29:32

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Formulár

Tak jsem narazil na problém s LibreOffice. Zůstává mi viset soubor po chybě a lze to vypnout jenom přes správce úloh. Takže to testuji na Apache OpenOffice kde to zase odmítá relaci 1:N.
     Cestou je vytvořit formulář pomocí průvodce a při tom vložit subformulář. Jenže relaci mezi dvěma tabulkami lze vytvořit zřejmě jen 1:1 (podle nápovědy by mělo jít postavit 1:N). Existuje trik jak to obejít. Proto zřejmě musí být postavena 3. tabulka (respektive dotaz), která bude mít dvě relace - každou na jinou tabulku a obsah řídit dotazem. Teprve tohle pak načítat do subformuláře.
     Asi za hodku odjíždím a nedostanu se k tomu dřív jak za 3 dny. Ještě to budu zkoušet, ale asi budu pokračovat až potom :-(
     Já tam sice můžu k počítači ale jsem tam omezen časem a nic moc řešit nemůžu - spíš jen z paměti. Vrátím se k tomu jak to bude možné.

Editoval neutr (20. 12. 2015 17:32:24)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 23. 12. 2015 16:53:19

strom01
Člen
Registrace: 8. 8. 2010
Příspěvků: 13

Re: Formulár

Tady je ke stažení databáze, kterou jsem kdysi udělal a kde je vidět jak funguje m:n relace a formulář s podformulářem. Snad jako inspirace.

Offline

#6 23. 12. 2015 21:27:51

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Formulár

Tak jsem se k tomu na chvíli dostal, ale nijak jsem nepostoupil. Kdysi jsem něco podobného řešil. Je dokonce možné že je to obsaženo v odkazu od strom01. Inspirací mi bylo video : Instruktáž jak na vazbu M:N Bohu žel dnes to podle toho už asi nelze postavit. Navíc problém je trošku jiný :
- Základem je výpis databáze Zákazníci. Když bude zapsáno číslo telefonní předvolby, tak není potřeba nic. Jenomže klient by měl změnit přiřazení Krajiny a tím by se měla změnit i předvolba. Tam by právě měla zafungovat ta vazba M:N (někdy také píšou N:N). Jejím základem je ale vazba 1:N.     
     Mám funkční vazby ve složitých relacích a mám i vazby 1:1 a fungují. Byly ale postaveny v jiných verzích AOO (LO). Nyní se při konstrukci zobrazuje 1:N, ale mám podezření že je to pouze 1:1. Ve videonávodu je vidět složená tabulka se dvěma klíči a tu se mi nedaří sestrojit. Původně jsem to dělal asi v roce 2013 (nebo 2014)a šlo to. Libre se seká a AOO to neumí. Dokonce myslím, že nefunguje dobře ani vzor od "strom01".


     Nicméně ještě by měla axistovat cesta pomocí aliasu a vztahy (relace) sestrojené jako SQL. Mimo toho jde honit vše makrem. Prostě stačí jednoduchý výpis a změnu Krajiny tam vložit makrem. To je ale dost testů a hodně času. Makro je něco jako poslední řešení - není to standardní postup. Ona zde hraje také úlohu verze JRE a možná nějaké nastavení. Možná je to jen nějaká ptákovina. Ještě uvidíme.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 23. 12. 2015 21:57:57

strom01
Člen
Registrace: 8. 8. 2010
Příspěvků: 13

Re: Formulár

Vzor je samozřejmě míněn jako demonstrace vazeb 1:N a M:N. Je to vidět v návrháři relací (Nástroje-Relace). Jinak databáze funguje bez problémů v LO 5.0.2 (openSUSE i W7). Používala se i v předchozích verzích, ale občas byly problémy se sestavami.

Offline

#8 11. 1. 2016 11:37:40

student
Člen
Registrace: 27. 2. 2006
Příspěvků: 94

Re: Formulár

Neviem, či to už máte vytvorené... môj pokus je tu:
http://ulozto.sk/xmjyyWoy/kontakty-01-uprava-odb

Najprv som zmenil relácie.... veď 2 krajiny sa nebudú volať rovnako, tak je to v podstate jedno aký je primárny kľúč, ale nepomohlo to.
Tak som vytvoril nový formulár s podformulárom. V oboch musí byť pole, kroté je spoločné pre obidve tabuľky, tu je to KrajinySk ( v podformuláry som ho skryl). Vo formlári som nastavil pole Krajin SK na typ Combo pole a ako zdroj údajov použil tabuľku Krajiny.

Možno potrebujete toto... a nie je to až tak zložité.

Offline

#9 11. 1. 2016 12:18:09

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Formulár

Pro student :
     Tazatel podle mne chtěl docílit jinou funkci. Když zavádí nového klienta, nebo například přepisuje jeho "krajinu SK" tak chce výběrem krajiny docílit současně automatického zápisu telefonní předvolby tak aby se zapsala do příslušného pole databáze Zákazníci.
     Lze nastavit výběr krajiny, ale ne paralelní zápis tel.predvol'by. Lze zobrazit tak jak uvádíte subformem krajinu a její volačku, ale ta se do databáze "Zákazníci" nepřepíše ani náhodou. Musela by mít svůj vlastní ComboBox - ale zase pak není vazba na "Krajinu SK".
     Mělo by to jít aliasem, ale mě se to zatím nepodařilo (ale moc jsem tomu zatím času nevěnoval). V každém případě by to mělo jít pomocí tabulky vygenerované dotazem. To se mi zatím nepodařilo stejně jako makrem které musí obsahovat sekvenci SQL.
     Když vytvoříme pohled tak to má počet záznamů krajiny x počet zákazníků - "X"*"Y" - v našem jednoduchém případě asi 200 záznamů (a to máme asi jen 5 zákazníků). Z toho už se dá něco vyselectovat, ale co až bude 200 zákazníků?


     Při tom má tazatel pravdu, že by spolu s výběrem krajiny mělo jít připsat číslo telefonní předvolby a to neumíme jednoduchou cestou.
     Když jsem koukal jak to dělají jinde, tak používají pro nový zápis extra formulář kde tedy jde správně postavit SQL dotaz i filtr. Když to ale aplikujete na jediný formulář (i se subFormem) tak se vše přepíše buď na dotaz, SQL, nebo tabulku. Oba způsoby spolu na jednom formu být nemohou. Totéž platí o filtru, ale to je také jen převlečené SQL.

Editoval neutr (11. 1. 2016 12:20:56)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#10 11. 1. 2016 13:08:57

student
Člen
Registrace: 27. 2. 2006
Příspěvků: 94

Re: Formulár

No neviem či je to najoptimálnejšie riešenie - načo mať uvedenú tel. predvoľbu v 2 tabuľkách? Veď to je účelom relačnej databázy, aby údaje, ktoré sa opakujú, boli na jednom mieste a neboli tak zbytočne duplikované.
Asi by bolo dobré prehodnotiť štruktúru databázy. Ja osobne rozlišujem ktoré tabuľky sú "číselníkové" a ktoré potom "údajové" a potom vytváram vzťahy medzi tabuľkami, dotazmi podľa potreby.

Editoval student (11. 1. 2016 13:17:43)

Offline

#11 11. 1. 2016 14:29:40

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Formulár

Ano souhlasím. Pak by ale musel postavit "Krajiny" jako relační a svázat je vazbou na cizí klíč ID Krajina v databázi Zákazníci. Mě se daří vypsat stejně vždy jen jediný údaj i když je to 1:N, nebo i M:N (už jsem postup našel). To podle mne zlobí a funguje jen 1:1.
     Je tam problémů víc. Například názvy sloupců jsou s mezerami a při vytváření dotazu pomocí návrhu se mi ze sloupce "Krajina SK" vytvoří sloupec jen jako "Krajina", plus ALIAS "SK". To se pak musí opravit v SQL pohledu, ale stejně to hází chybu. Některé názvy s mezerou tam lze vložit, ale v principu by měly být nadpisy řetězcem bez mezer. Ze zvyku by to měly být jen znaky ASCI 7 bit bez teček (normy pro DB2 a jiné), bez čárek a podobných věci. Když je potřeba napsat název "Krajina SK", tak by to mělo být takto "Krajina_SK".

Editoval neutr (11. 1. 2016 14:35:35)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí