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

#1 21. 3. 2018 07:11:34

nanuqcz
Člen
Registrace: 21. 3. 2018
Příspěvků: 3

Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Dobrý den, 
udělal jsem si testovací databázi: 
https://i.imgur.com/VzFaMy4.png 
 
a Query pro data z této databáze: 
https://i.imgur.com/2f4gqDE.png 
 
Pro účely editace záznamů jsem si vytvořil jednoduchý form: 
https://i.imgur.com/xrMEJPx.png 
 
Můj dotaz
Jakým způsobem se z výpisu dat v Query dostanu do mého editačního formuláře? 
 
Děkuji za rady.

Editoval nanuqcz (23. 3. 2018 12:02:35)

Offline

#2 21. 3. 2018 07:49:02

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Zřejmě máte na mysli 'jak otevřít dotaz ve formuláři'. Je to celkem jednoduché.
A - vytvoříte dotaz - je to vlastně tabulka výberu. Uložíte pod jménem (například Dotaz_1).
B - Vytvoříte formulář pomocí průvodce. Dostanete nabídku zda Dotaz:Dotaz_1, nebo tabulka 'people'.
C - Problém je v tom, že nemůžete běžným způsobem existující dotaz přepsat (při aktualizaci). Musíte původní smazat a vytvořit nový se stejným jménem, a nebo ponechat a vytvořit dotaz i formulář s jiným jménem.


     Neuvedl jste zda používáte LibreOffice, nebo Apache OpenOffice. Jde o to, že klasickým strojem je v obou případech HSQLDB. Ale Libre office obsahuje ještě implementaci Firebird kde je to sice hodně podobné ve smyslu použití, ale je to sofistikovanější a lepší (více) nabídek. Například přímo pole typu BLOB. To se dá v klasické verzi také použít ale je to dost složité a ne všechny binární objekty tak jdou načíst.
     V současných verzích také hraje úlohu systém architektury. Nevím jestli to není někde popsáno, ale architektura 86 je maličko jiná nežli 64 - tady jde jen o Libre Office.


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

Offline

#3 21. 3. 2018 08:22:07

nanuqcz
Člen
Registrace: 21. 3. 2018
Příspěvků: 3

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Mým cílem je skrz LibreOffice Base editovat data v PostgreSQL na vzdáleném serveru. 
 
Pokud je problém s dotazy (Queries), nemusím je používat, stačí mi přistupovat přímo k tabulce. 
 
Mým cílem je následující workflow: 
1. Nějakým způsobem vyfiltruji seznam lidí z databáze (třeba podle příjmení). 
2. Z výsledku dodatečně ručně vyberu/označím jeden záznam a otevřu ho ve formuláři. 
3. Změním co potřebuji, uložím a vrátím se zpět do seznamu lidí, kde mohu opět filtrovat. 
 
Vím, že můžu nějakým způsobem filtrovat lidi i přímo ve vytvořeném formuláři. To ale nechci, protože ve formuláři vidím vždy max. jeden záznam z DB. Což je nepřehledné a nepohodlné. Potřebuji vyfiltrovat seznam lidí, ze kterého se dodatečně rozhodnu, který záznam chci otevřít ve formu a editovat. 
 
Předpokládal jsem, že taková základní věc bude stejná ve všech typech databází. Ať už půjde o HSQLDB, MySQL, nebo PostgreSQL.

Offline

#4 21. 3. 2018 12:39:36

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

nanuqcz napsal(a)

A - Mým cílem je skrz LibreOffice Base editovat data v PostgreSQL na vzdáleném serveru. 
 

B - Pokud je problém s dotazy (Queries), nemusím je používat, stačí mi přistupovat přímo k tabulce. 
 

C - Mým cílem je následující workflow: 
     A1. Nějakým způsobem vyfiltruji seznam lidí z databáze (třeba podle příjmení). 
     A2. Z výsledku dodatečně ručně vyberu/označím jeden záznam a otevřu ho ve formuláři. 
     A3. Změním co potřebuji, uložím a vrátím se zpět do seznamu lidí, kde mohu opět filtrovat. 
 
D - Vím, že můžu nějakým způsobem filtrovat lidi i přímo ve vytvořeném formuláři. To ale nechci, protože ve formuláři vidím vždy max. jeden záznam z DB. Což je nepřehledné a nepohodlné.


E - Potřebuji vyfiltrovat seznam lidí, ze kterého se dodatečně rozhodnu, který záznam chci otevřít ve formu a editovat. 
 
F - Předpokládal jsem, že taková základní věc bude stejná ve všech typech databází. Ať už půjde o HSQLDB, MySQL, nebo PostgreSQL.

     Nejdříve musím uvést, že osobně nemám s tímto propojením zkušenost. Ale podle odkazů se to dá realizovat zřejmě snadno. Nejlepší bude když zadáte vyhledávání (Google) Libre Office filter for PostgreSQL nebo Libre Office filter from PostgreSQL. Nicméně na vlastní propojení se nedoptáváte, takže to máte zřejmě otestováno. Podle odkazů to není složité viz : Generic form of URL for PostgreSQL, nebo například Connecting to PostgreSQL database with LibreOffice Base.


     Takže ad A je reálné zřejmě i bez specializovaného filtru. Většina spojení se musí realizovat pomocí filtru, ale zrovna pro PostgreSQL postačuje zřejmě plain text.


     Ad B - to je správně protože naše Base umí pouze dodatečně formulář, respektive potřebuje soubory s příponou '.odt'. Filtr udělá právě to, že 'zpacifikuje' externí databázi pod svou koncovku a těžko s tím pak něco dělat. V Base totiž dotazy fungují jen v rámci SELECT a to ještě pod nějakou prastarou normou.


     Ad C - to už může být oříšek. Vše lze až na C.3 kde asi budou potíže. Mělo by to jít obecně externím SQL dotazem. Ten lze spustit makrem. Pro mne je to 'terainkognita', ale jít by to mělo zejména pokud lze editovat textovými soubory. Vše by potom probíhalo opravdu z Base.


     Ad D - S tím by problém být neměl. Pouze upozorním, že je výhodnější použít Calc jako zdroj pro Base, nebo přímo samotný - bez Base. V celku jde jen o množství importu a Calc umí 1,048 milionu což by na výběr mělo stačit. Jde ale také o počet sloupců. Calc snese běžně 2 - 3 miliony buněk zaplněných prostým textem. Nanejvýš se zpomalí ale i přetížení se dá řešit fragmentací.


     Ad E - Zde se trošku mýlíte, ale Base byla postavena jako minimalistická s tím, že hlavním nástrojem je Calc. Takže to co Báse neumí, lze udělat Calcem. Zjistil jsem, že i jádro Firebirdu se chová stejně jako HSQLDB - ve smyslu omezení SQL (respektive obecně dotazů).
     Celkově jsem optimistický, ale bude to asi složitější nežli si představujete. Přes to mne to zajímá z jiných důvodů a zřejmě to bude zajímat i jiné uživatele.


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

Offline

#5 21. 3. 2018 15:17:49

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Podľa obrázkov súdim, že base je už spojená s databázou na PostgreSQL.... tak?
Ak potrebujete vidieť naraz viac záznamov - užívateľov, vytvorte si formulár, ako zdroj použite priamo tabuľku, typ formulára použite tabuľku - zobratí formulára akoby s vloženou tabuľkou.
Keď ten formulár bude vytvorený na základe - zdroj dát bude tabuľka, tak priamo môžete upravovať zobratené záznamy.

Treba si uvedomiť, že base pracuje tak, že základom sú tabuľky, upravovať tabuľky je ideálne prostredníctvo Formulárov. Query - dotazy sú na analýzu, prehľady, sumáre, prepočnt..... atdˇ... a ich výsledok sa dá využiť vo formulári, za určitých podmienok ako filter

Offline

#6 23. 3. 2018 11:05:03

nanuqcz
Člen
Registrace: 21. 3. 2018
Příspěvků: 3

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Tak se mi to asi povedlo :-) 
 
Klíčem je vytvořit formulář, který se skládá ze 3 vnořených formulářů: 
https://i.imgur.com/035pdP8.png 
 
1) Top-level formulář je filtrační formulář. Blbé na LibreOffice/OpenOffice Base je to, že každý formulář musí být navázaný na nějakou tabulku. Jinak se pak nikde nezobrazují žádná data. Vytvořil jsem tedy tabulku "candidate_filter_form". Hodnotu z filtračního formuláře pak můžu předat jako proměnnou do hlavního formuláře se seznamem lidí: 
https://i.imgur.com/7IBPEfz.png 
 
2) Když už ve formuláři se seznamem lidí (MainForm) mám k dispozici hodnotu z filtr. formuláře (v proměnné
Var_KEYWORD), můžu ji vložit do SQL dotazu pro získání lidí: 
https://i.imgur.com/uZbyxgq.png 
 
3) Když ve MainForm vyberu člověka, otevře se mi v editačním formuláři pod ním (SubForm). SubForm je na MainForm navázaný klasicky přes "Link master/slave fields". Oba formuláře pracují se stejnou tabulkou, proto jsou navázány přes stejný sloupeček "id"->"id": 
https://i.imgur.com/H9lK6WI.png 
 
Podle mě jde o základní scénář práce s daty. A tak se velmi divím, že na něj všude na internetu neexistují pro LibreOffice Base tutoriály. 
 
Snad tedy tento můj postup pomůže dalším lidem wink

Offline

#7 23. 3. 2018 12:33:16

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

To vypadá opravdu dobře. Jen na první pohled nevidím zpětně export (přepis) úpravy do původní databáze - tedy opakování pro stejné úpravy.


      Jenom k terminologii: Každá tabulka, pohled nebo dotaz má svůj hlavní formulář - ten má název 'MainForm'. Ostatní jsou podřízené a říká se jim 'SubForm'. Na tyto názvy se navazují další věci jako dotazy, podledy a podobně.
     Pro použití jiným uživatelem by bylo potřeba popsat detailněji celý postup a zdůvodnění. Báse je popelkou kterou používá jen velmi málo uživatelů. Mimo uživatele 'student' jsou tu ještě asi tak dva kteří Base používají (může jich být více ale ti nekomunikují).


     Podle všeho byste byl schopen řešit mnoho různých aplikací, nebo potřeb. Možná byste byl schopen a ochoten přispívat formou návodů. Máme zde několik návodů pro Base, ale je jich poskrovnu. Navíc Base od verze LO 6 dostává nové vlastnosti.
     Uvedu úproč je zajímavá těžba dat z externích databází. Různé IS využívají různé databáze zejména ve státní správě a samosprávě. Při tom používají proprietární MSO pro koncové aplikace (formuláře). Já jsem se setkal pouze s výpisem z relační databáze - to lze zpracovat snadno, ale dotazovat přímo centrální databázi neumím. Váš příklad s PostgreSQL je zajímavá právě z toho důvodu, že umíte těžit databázi přímo.
     Tedy jsou zde návody například pro práci s MySql, ale tato a stejně tak například Access nejsou pro účely centrálních evidencí dostatečné. Takže Base jako aplikace která umí přistoupit k "dopělým" databázím je celkem terno s možným komerčním efektem.


     Já nemohu hovořit nebo dokonce rozhodovat za portál, ale mohu doporučit. Jde spíš jen o Vaše možnosti, schopnosti a zájem. Už jen zpracování komplexu operací s PostgreSQL by stálo za seriál. Takže popřemýšlejte zda by Vám něco takového vyhovovalo.

Editoval neutr (23. 3. 2018 12:39:06)


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

Offline

#8 23. 3. 2018 13:12:40

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

len k "Jen na první pohled nevidím zpětně export (přepis) úpravy do původní databáze" - nie je treba export, keďže v tomto prípade base využíva ako zdroj dát PostgreSQL, akonáhle sa niečo - nejaký údaj zmení pomocou formulára (a technicky) prejde na iný záznam, v tom momente sa to zmení v databáze - v dátovom súbore PostgreSQL, rovnako akoby sa použila vstavaná HSQLDB.

Niečo podobné som robil, ako databázový server som mal MSDE resp. MSSQL (teraz neviem... tuším bola nejaká verzia 2005 ako free a v 1 prípade som využil MySql). Pokiaľ mám info, dodnes to beží. Tu je to zverejnené v staršej vezii, keď je použitá HSQLDB - jednoužívateľská, keďže som to potreboval pre viac používateľov tak som to hodil na MSSQL (ale to je zbytočné zverjňovať kvôli SQL.

https://www.openoffice.cz/doplnky/sablo … ords=pošta

V podstate base v takýchto prípadoch slúži ako "frontend" - Dáta sú uložené v 1 alebo viacerých tabuľkách na SQL (base podporuje pripojenie rôznym SQL, prípadne som využil ODBC - a to nezávisle na platforme - windows aj Linux) a úprava údajov sa robia prostredníctvom Base (netreba vyrábať nejaké formuláre resp. stránka v HTML alebo PHP). Dokonca som využíval pripojenie dBase na pripojenie databázy s DBF súbormi.

Mimochodom dosť obsiahly video návod:
https://www.youtube.com/playlist?list=P … 4CYHMr4wmV

Inak pekná práca... niečo také som mal na mysli.

Editoval student (23. 3. 2018 13:38:02)

Offline

#9 23. 3. 2018 14:04:40

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Pro student:
     S takovým postupem nemám zkušenost, ale nemyslím si že by to bylo tak snadné. Specializované databáze bývají blokované z pohledu editace, je kontrolována inetegrita a ani přístup pomocí SELECT nebývá volně přístupný.
     Pokud je databáze otevřená pro Base tak musí být implementovaná jako '.odb'. Pak ale původní databázový stroj asi nemá k datům přístup. Je pochopitelné, že se dá udělat nějaký report, který už používá jen Base. Ale přepis, nebo mazání v původní databázi musí být podmíněn jinak.
     Je jasné že se jedná o okmažik připojit a následně odpojit Base, ale pak se musí spustit procesy validace respektive potvrzení změn. Centrální databáze mají nejméně 100% zálohy a pokud se neudělají předepsané operace bude změna zrušena.
     V praxi to znamená, že Base jako frontend musí udělat vše co je hostitelskou databází systémově podmíněno. To se odehrává na úrovni připojení (log, role). Pak ale musí příjít kontrola integrity a hostitelská databáze by měla udělat odhlášení hostující aplikace a zpřístupnění dat.


Vycházím z tohoto

Nápověda napsal(a)

Import dat do aplikace Base

Textové soubory, sešity a systémový adresář kontaktů můžete importovat jen v režimu pouze pro čtení.

Když importujete text nebo sešit, musí soubor v prvním řádku obsahovat záhlaví. Druhý řádek souboru obsahuje první řádek samotných dat. Formát každého pole ve druhém řádku určuje formát celého sloupce. Při importu do Base se ztratí všechny informace o formátování sešitů.


Příklad: pokud chcete zajistit, aby první sloupec měl textový formát, musíte zajistit, aby první pole prvního řádku s daty obsahovalo text. Pokud pole v prvním řádku dat obsahuje číslo, formát celého sloupce se nastaví na číslo a v tomto sloupci se zobrazí pouze čísla.

Nápověda napsal(a)

Import dat do LibreOffice
Chcete-li si vyměňovat data v textovém formátu, použijte importní a exportní filtry LibreOffice Calc.

1. Exportujte požadované údaje ze zdrojové databáze do textového formátu. Doporučujeme formát CSV. Tento formát odděluje datová pole oddělovači (např. čárkami nebo středníky) a záznamy odděluje odřádkováním.
2. Zvolte Soubor - Otevřít a klepněte na soubor pro import.
3. V poli se seznamem Typ souboru vyberte "Text CSV". Zvolte soubor a klepněte na Otevřít.
4. Otevře se dialog Import textu. Určete, která data z textového dokumentu chcete importovat.
Jakmile jsou data v sešitu LibreOffice Calc, je možné je upravovat podle potřeby. Možnosti, jak uložit data jako zdroj dat LibreOffice:
Uložte aktuální sešit LibreOffice Calc ve formátu dBASE do složky databáze dBASE. Zvolte Soubor - Uložit jako, poté zvolte Typ souboru "dBASE" a určete složku dBASE databáze.

Export ve formátu CSV
Aktuální sešit LibreOffice je možné uložit v textovém formátu, který lze načíst do mnoha jiných aplikací.
1. Zvolte Soubor - Uložit jako.
2. Jako Typ souboru vyberte "Text CSV". Zadejte název souboru a klepněte na Uložit.
3. Otevře se dialogové okno Exportovat textové soubory, ve kterém je možné zvolit znakovou sadu, oddělovač polí a oddělovač textu. Klepněte na OK. Zobrazí se upozornění, že byl uložen pouze aktuální list.

     Vycházím z toho, že nebude problém vzít si data a přefiltrovat. Takto nalezené výrazy ale musíme odeslat jako SQL. Nepředpokládám, že by Base Načetla celou databázi, přepsala a exportovala - s tím že se původní soubor přepíše.


     Rád se nechám poučit ale takto snadné jak popisujete to asi nebude. Dnes už pracuji s Base jen minimálně, ale užíval jsem Aproach a později SQL 602. Nakonec jsem chvíli používal CACHE ale to nebylo finančně reálné. Postupně jsem na databáze rezignoval.

Editoval neutr (23. 3. 2018 14:18:44)


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

Offline

#10 23. 3. 2018 14:56:26

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Mne to tak fungovalo:
1. rozbehal som SQL server
2. vytvoril som si databázu (tabuľku) na SQL servery
3. vytvoril v Base databázu - resp. pripojil k existujúcej databáze na SQL, ktorú som predtým vytvoril
4. všetko ostatné som už robil cez Base, dokonca myslím, som vytváral aj nové tabuľky (pripojil by som súbory, ale tu to nejde).
´
´
Keď som potreboval naimportovať údaje do Base (aj tej spojenej s SQL) tak som postupoval:
1. previedol som si údaje do Calc (pokiaľ už neboli pôvodne)
2. v Calc som prispôsobil štruktúru (stĺpce) tak aby zodpovedala štruktúre v Base (tabuľku v Base som už mal vytvorenú, ale dá sa aj vytvoriť úplne nová).
3. v Calc som vybral celú tabuľku napr. A1:H365 a stalčil Ctrl+c (skopíroval údaje)
4. v Base som klikol pravým tlačidlo na tabuľku do ktorej som chcel naimportovať údaje a vybral "Vložiť"
5. postupoval podľa sprievodcu - zvolil som len priložiť údaje, vybral dátové typy, spároval stĺpce a dokončil

A dáta boli naimportované v tabuľke v Base.
´
Iste, CSV sa dá použiť pre rôzne databázy, akurát si treba dať pozor na oddeľovač (či použiť čiarku, bodkočiarku alebo dokonca tabelátor), ale mne to stačilo dostať do Base.
´
´
Je dobré vedieť, že ak sa použije vstavená databáza (HSQLDB alebo Firebird), dá sa použiť ako jednoužívateľská. To znamená, že v reálnom čase môže mať databázu otvorenú len 1 užívateľ.  Pokiaľ sa pripojí na externú databázu, dokážu pracovať naraz viacerí užívatelia (samozrejme neotvárajú ten istý súbor, ale každý má u seba identický súbor napr. posta.odb - to je ten frontend a po sieti behajú "len" dáta medzi base a SQL)

Offline

#11 23. 3. 2018 15:29:21

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

To vypadá celkem dobře - zejména to video. Nemám k dispozici vhodnou databázi ale takhle to asi stačí.
     Sice jsem si nainstaloval Firebird, ale ještě jsem se nedokopal k nalezení funkčního grafického rozhraní. Ještě bych potřeboval nasměrovat v těžbě relační databáze. Tam to bez znalosti názvů sloupců (databází) vůbec nejde dovodit. Ale nějaký způsob musí existovat - nejspíš odvozením z reportu.


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

Offline

#12 23. 3. 2018 18:56:01

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

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Keď si dobre spomínam, použil som mySQL + phpmyAdmin (na ovládanie). S Firebird nemám žiadne skúsenosti.

Offline

#13 7. 11. 2020 20:13:44

Roj
Člen
Registrace: 31. 10. 2020
Příspěvků: 18

Re: Z výpisu záznamů do editačního formuláře - VYŘEŠENO

Tohle je vlastně odpověď na můj dotaz, položený včera (o dva a půl roku později, než to sem nanuqcz napsal). Bohužel to nedám dohromady, když nevím, jaké vlastnosti jsou nastaveny na prvek, který je v Navigatoru popsán jako tlačítko PREV.

Offline

Zápatí