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

#1 31. 10. 2020 01:16:06

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

Jak sloučit jméno a příjmení? - VYŘEŠENO

Ahoj. Nevím, jestli to tady ještě žije. Jsem naprostý začátečník s bohatými zkušenostmi s FoxPro.
Mám tabulku s poli KrJmeno a Prijmeni
Potřeboval bych udelat browse (tabulku ve formulari), kde by bylo zobrazeno trim(KrJmeno)+" "+trim(Prijmeni)
Když to dám v úpravě formuláře vypsáním do karty Data v okně Vlastnosti "SeznamUkazek.KrJmeno + SeznamUkazek.Prijmeni", neprotestuje to, ale sloupec je v režimu výpisu dat zcela prázdný.
Zkoušel jsem ručně SQL napsat dotaz, ale žádnou syntaxi mi to nepobralo. Možná tu syntaxi neovládám.
mám LO Verze: 6.4.6.2
Toto je první z asi 100 otázek, které potřebuju a neumím vyřešit, ale jako výkop by to asi stačilo :)

Editoval Roj (1. 11. 2020 19:41:44)

Offline

#2 31. 10. 2020 07:43:14

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Roj napsal(a)

Ahoj.
A : Mám tabulku s poli KrJmeno a Prijmeni. Potřeboval bych udelat browse (tabulku ve formulari), kde by bylo zobrazeno trim(KrJmeno)+" "+trim(Prijmeni)
     Když to dám v úpravě formuláře vypsáním do karty Data v okně Vlastnosti "SeznamUkazek.KrJmeno + SeznamUkazek.Prijmeni", neprotestuje to, ale sloupec je v režimu výpisu dat zcela prázdný.


B : Zkoušel jsem ručně SQL napsat dotaz, ale žádnou syntaxi mi to nepobralo. Možná tu syntaxi neovládám.mám LO Verze: 6.4.6.2

     ad A : Pravděpodobně stačí vynechat to čištění (TRIM) výrazů. To by se mělo ošetřit už při zadávání do databáze. Když už existuje databáze která má zbytečné mezery před, nebo za výrezem, bude nutné zřejmě očistit databázi před načtením do Base.
     To se dá udělat pohodlně v Calcu, ale je to procedura "navíc". Ovšem vše může být ošetřeno makry, které je možné spouštět přímo z Base a dokonce bez "mezipřistání". Jde o to zda by nebylo vhodné udělat kontrolu konzistence všech datových struktur.


     ad B : Problém s SQL je v tom, že je použita norma z roku 92 a jenom v rozsahu SELECT. To je velká slabina, ale k mnoha pracím je možné použít přímo Calc (od verze LO 7 ař 10 milionů řádků). Base má sílu v tom, že umí pracovat s přístupovými právy, rolemi a podobně. Je určena spíš k týmové práci. Při dávkovém zpracování importů se to dá také dobře použít.


     Pokud je mi známo, tak nejvc zkušeností s převodem Foxky má asi uživatel hdplot. Je mi jasné že Fox Pro je mrtvá (32 bitů už není podporováno). Base přežila do 64 bitů dík implementaci celého balíku LibreOffice (Apache OpenOffice je stále jen 32 bitů i když na 64 bitech chodí).


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 31. 10. 2020 09:15:49

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Jupí,žije! smile
Já jsem ten trim() uvedl proto, abych ukázal, co je cílem, ne proto, že bych to nejdřív nevyzkoušel bez něj. Nefunguje to. Spíš si myslím, že dělám nějakou triviální chybu, vždyť tohle je naprosto triviální požadavek. Kdybych věděl, že to bude problém, nedával bych pole KrJmeno a Prijmeni zvlášť do tabulky, ale sloučil bych to. Bohužel už jsem to naplnil daty, potřebuju s tím pracovat. Že to mám zvlášť, je jen kosmetická vada, ale na funkci to vliv nemá smile
Přečetl jsem celý nedokončený seriál od pana Svobody, čtu další věci, co jsem našel, ale bohužel málo z toho se věnuje probémům v Base.
Ale já už jsem se do toho zabral, věnoval tomu týden a chci to umět, i když ve staré dobré Foxce bych tu celou appku sfrknul za tři hoďky. Staré dobré časy už nikdo nevrátí.
Dokonce jsem ze zoufalství zkusil DOSbox a v něm foxka jede, ale DOSbox si naprosto vůbec nerozumí se zbytkem systému, generuje to problémy, že je to prakticky nepoužitelné. Lepší bude ta Base.

Offline

#4 31. 10. 2020 10:44:20

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Roj napsal(a)

.....
Spíš si myslím, že dělám nějakou triviální chybu, vždyť tohle je naprosto triviální požadavek. Kdybych věděl, že to bude problém, nedával bych pole KrJmeno a Prijmeni zvlášť do tabulky, ale sloučil bych to. Bohužel už jsem to naplnil daty, potřebuju s tím pracovat. Že to mám zvlášť, je jen kosmetická vada, ale na funkci to vliv nemá smile
.....

     Ano měl by to jít pomocí dotazu SQL. Ale pro rozsáhlé výpisy je snadnější udělat v existující tabulce jedno pole navíc jako alias a do něj sloučit jméno a příjmení.
     Na druhou stranu je možná snadnější a lepší sloučit v Calcu oba sloupce do jednoho (JménoPříjmení) a ty dva původní smazat. Problém samostatně vedeného křestního jména a příjmení souvisí s možnou záměnou (například jméno Petr a příjmení Pavel), dále je podobým problémem titul před a za jménem. Chyby se stávají při manuálním zadávání.
     Base se v rámci kancelářských aplikací používá v různých modulech a k různým účelům. Tím minoritním je právě práce v čistě Base prostředí. Nejčastěji se Base používá pro hromadnou korespondenci, nebo se pomocí jí řídí přístupová práva. Pro Vás je to zatím zřejmě nepochopitelné, ale zdroj Base je nejčastěji tabulka Calcu, respektive CSV souborů, které si Base přivlastní a převede na binární formát.
     Už dávno neplatí, že databáze se používá zejména kvůli schopnosti pojmout velké datové objemy. Dnes je význam spíš v tom, že databáze je garantovaný a pečlivě hlídaný zdroj - něco jako etalon. Právě toto je majoritní význam Base (čímž předeběhla trendy při svém vzniku). Mám staženo mnoho "pure" příkladů databází, ale to je spíš jenom exotická vyjímka. Typické pro tyto případy je zadávání jednotlivých položek manuálně. Výstupem jsou například lékařské doklady a podobně.


     Tím chci říct, že pokračovat stylem práce tak jak jste byl zvyklý lze - tedy čistě jen pomocí nástroje Base, ale mnohem efektivnější je použít spojení zdroje Calc > Base a výstupy Base > Writer, Base > Calc, Base > Draw, Base > Impress a podobně.
     Při používání jednotlivých relevantních výrazů - například v šablonách Writer (prakticky shodné s formuláři Base které jsou jen biárním formátem Writeru) lze zobrazit registrovanou Base a přímo z ní nabrat výraz, řádek, nabo i více najednou pomocí Drag&Drop (respektive schránky). Vložit do Writeru jako pole a Writer uložit jako PDF. Nástroj hromadné korespondence (jen Writer) to dělá perfektně. Calc to může načítat makry a podobné kousky. Prostě Data z Foxky zachráníte, ale používání databáze je k finálním vstupům do značnéí míry přežitek.


    Pokud byste potřeboval pomoci s nějakou ukázkou postněte sem vzor (nejlépe pomocí "uložto.cz"), nebo mi to pošlete na email, který mám uvedený pod tímto příspěvkem.

Editoval neutr (31. 10. 2020 10:52:15)


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 31. 10. 2020 12:05:47

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Když já toho o Calcu a Writeru vím ještě méně než o Base a připadá mi zbytečné to ještě studovat.
Odb bych klidně poslal, ale jsou tam osobní údaje a já nevím, jak bych to zanonymizoval, kromě ručního přepsání v browsu. Base bohužel nemá příkazové okno jako Foxka, kde si s tím člověk mohl dělat, co chtěl, interaktivně. A jazyk SQL vlastně neumí vůbec nic....

No nic, budu dál tápat a doplňovat si data do čtyř svázaných tabulek ručně a hlídat si indexy z hlavy a vyhledávat řádky pomocí ctrl+F smile

Offline

#6 31. 10. 2020 13:23:12

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Ted mi někdo poradil funkci concate()
Takže zkouším dotaz
SELECT concate( "klient"."KrJmeno", "klient"."Prijmeni" ) AS "Klient", "Udalosti"."UkazkaID", "Udalosti"."Datum", "Udalosti"."Cas", "Udalosti"."Stalose", "klient"."KontaktID", "klient"."Tel", "klient"."Adresa", "klient"."Obec" AS "Bydliste" FROM "Udalosti" INNER JOIN "klient" ON "Udalosti"."KontaktID" = "klient"."KontaktID" ORDER BY "Udalosti"."Datum", "Udalosti"."Cas"

Jde to uložit, dokonce bez chubových hlášek
Pak chci dotaz načíst a stane se toto:

Stav SQL: S1000
Kód chyby: -33

Access is denied: CONCATE in statement [SELECT concate( "klient"."KrJmeno", "klient"."Prijmeni" ) AS "Klient", "Udalosti"."UkazkaID", "Udalosti"."Datum", "Udalosti"."Cas", "Udalosti"."Stalose", "klient"."KontaktID", "klient"."Tel", "klient"."Adresa", "klient"."Obec" AS "Bydliste" FROM "Udalosti" INNER JOIN "klient" ON "Udalosti"."KontaktID" = "klient"."KontaktID" ORDER BY "Udalosti"."Datum", "Udalosti"."Cas"]

A nevidím nic.

Offline

#7 31. 10. 2020 14:13:59

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

To je jasné. V dotazech platí jen výrazy SQL - respektive ty které se dají navolit při vyhotovení v editoru (and, or, + a podobě). Concate, nebo Concatenate jsou funkce buď z Basicu, nebo ve druhém případě přímo ze sešitu Calc. Nevím o tom, že by SQL tento příkaz akceptovalo. Může to fungovat v dotazech které posílá Basic. Tam by mělo fungovat i Jméno & " " & Příjmení.
    Ale syntaxe by mohla dovolit operátor and ve spojení s Chr(34). Tedy možná takto :
Jméno AND Chr(34) AND Příjmení. Možná by stačilo "+". Tohle jsem ale netestoval - jen tipuji.

Editoval neutr (31. 10. 2020 14:15:35)


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 31. 10. 2020 14:53:36

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Já jsem vycházel z tohoto:
https://stackoverflow.com/questions/202 … e-in-mysql
Vyzkouším ještě ty plusy a ty věci, co píšeš, ale mám dojem, že i to byla vyzkoušená nefungující možnost. Není z čeho čerpat sad

Offline

#9 31. 10. 2020 15:40:36

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

S tím plusem to překladač zbaští, ale dotaz vyhodí chybu. S & a AND vyhodí při uležení rovnou překladač:
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE

Offline

#10 31. 10. 2020 17:13:11

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Roj napsal(a)

Já jsem vycházel z tohoto:
https://stackoverflow.com/questions/202 … e-in-mysql
Vyzkouším ještě ty plusy a ty věci, co píšeš, ale mám dojem, že i to byla vyzkoušená nefungující možnost. Není z čeho čerpat sad

     Tohle platí v motoru MySql, ale nikoliv v Base i kdyby to bylo v motoru Firebird. Pan Svoboda který dělal seriál o Base používal MySql jako samostytný stroj který má sice podporu v Base, ale samotný motor byl v JDBC a silně ořezaný. Ani paralelní instalace JDBC, MySql, nebo Firebirdu s Base nehne. Dají se načíst jen výstupy v podobě tabulek pro které má Base filtry.



     Vámi uváděné "Potřeboval bych udelat browse tabulku" se řeší ve formuláři (formu) prvkem tabulka, který má potlačené nechtěné řádky, respektive sloupce. Nevím co vlastně požadujete, respektive potřebujete a na co. Pojem Brovse tabulka je pro Vás asi vševypovídající pojem, ale pro mne je to jen tabulka k prohlížení. Je to prohlížení tabulky s použitím filtrů? Co dál - po výběru export do tiskové sestavy, nebo k vytvoření dopisů a podobně?


     Řešení pro Base existuje v podobě aliasu (rozšířit databáze), nebo upravit v Calcu, a nebo makra. Formuláře (tz Form) lze jistě vybavit dvěma kolonkami a unikátním klíčem je ID. Formuláře nutně nepotřebují sloučené jméno a příjmení. Pokud ano, tak je systémově lepší sloučit v databázi. Formulář se používá buď v základní formě pro přidávání záznamů, nebo jejich výběru (export), nebo ve složitější podobě se "subformem" kde se zobrazují například vázané údaje a podobně.


     Vámi uváděné "Potřeboval bych udelat browse tabulku" je pro mne buď náhled na databázi, nebo úprava do formu.
     Druhým typem výstupu jsou tiskové sestavy a třetím typem jsou "dotazy" - tedy tabulky odfiltrované podle potřeby. Dají se uložit a načíst do formu.


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

#11 31. 10. 2020 18:17:20

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Ano, slovem "browse (což byl nejpoužívanější příkaz Foxky) označuju objekt v obecném slova smyslu, který zobrazuje v řádcích záznamy (věty, řádky) tabulky a ve sloupcích pole (sloupce?) tabulky. Tabulky ve významu dat, ne zobrazení. Právě proto, aby se to nepletlo, jsme tomu říkali "browse" - to byl způsob zobrazení dat, výstup s možností editace a vstupu.
Když se dojelo na konec, byl tam prázdný řádek, vybízející ke vstupu a přidání dalšího záznamu (vety, řádku).

To funguje i u toho, co je ve formulářích Base, popřípadě toho, co se zobrazí při kliknutí na tabulku přímo v základním okně Base.

A já prostě chci mít možnost ve sloupcích toho, čemu říkám "browse", (protože nevím, jak se to jmenuje správně v Base), zobrazit něco víc než jen holá data z tabulky. Třeba věk jako rozdíl roku narození z tabulky a aktuálního letopočtu. Nebo cenu s DPH na základě ceny bez DPH a nějaké proměnné DPH. Nebo jméno a příjmení.
Nevěřím, že by to Base neuměla, to by byla opravdu zcela k ničemu. Jen nevím, jak se to dělá, a to jsem dost gůglil.

Editoval Roj (31. 10. 2020 18:20:23)

Offline

#12 1. 11. 2020 08:57:39

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Roj napsal(a)

...A já prostě chci mít možnost ve sloupcích toho, čemu říkám "browse", (protože nevím, jak se to jmenuje správně v Base), zobrazit něco víc než jen holá data z tabulky. Třeba věk jako rozdíl roku narození z tabulky a aktuálního letopočtu. Nebo cenu s DPH na základě ceny bez DPH a nějaké proměnné DPH. Nebo jméno a příjmení.
Nevěřím, že by to Base neuměla, to by byla opravdu zcela k ničemu. Jen nevím, jak se to dělá, a to jsem dost gůglil.

     Musím Vás zklamat. Klasické databáze (jako třeba FoxPro) včetně relačních (jako třeba Access) a podobně jsou samostatné instalace. Většinou mají jak GUI (často více druhů), tak příkazový řádek. Příkazový řádek se používá zejména k ovládání z jiných aplikací - zejména k těžbě dat. Grafické rozhraní (GUI) pak umí zejména manipulace s doplňkovými moduly. Velké databáze umožňují přímo programovat například podobně jako programovací jazyky - tedy včetně frameworků a složitých výpočtů.
     Velké databáze jsou skutečně robustní a náročné na obsluhu programátora. Také jsou patřičně drahé. Cena je odvislá ponejvíc z počtu klientů a velice často jde o serverovou instalaci. Často bývají základem informačních systémů. Tady si představíme například "SAP".
     Nejvíce se asi používají "středně velké" databáze typu MySql a podobně, které se nasazují zejména na webové stránky. To s čím si hrajeme zde jsou zastaralé systémy často používané pod 16-bity (DB2, Approach, ...). To že se dožily reinkarnace na 32-bitů je vlivem boomu v 90-tých letech, který se ale vydal směrem k relačním databázím.


     Naše Base nebyla nikdy pod Windows samostatnou instalací. Vždy se jedná o jeden "modul" kancelářské aplikace LO (AOO). jejím předkem byla dBase od stejného vydavatele jako StarOffice, který byl předchůdcem OpenOffice (také stále používáme StarBasic na rozdíl od VB, nebo VBA).
     Od zaintegrovaného "modulu" nemůžete očekávat výbavu stejnou jakou mají samostatné instalace. Aby se Base "vyrovnala" nezávislým instalacím, je nutné využít další moduly stejného kancelářského balíku. Při správném spřažení modulů se dá dělat s Base (respektive s kancelářským balíkem) mnohem více, nežli ve "stejně starých" ale přežitých (morálně opotřebených) nezávislých instalací.


     Takto byla Base navržena od samého začátku. Již jsem to dříve uváděl. Dík potřebám se od dnešní databáze očekává zejména rychlé vyhledání požadovaného záznamu. Ten se v databázi ani nefiltruje. Informačnímu systému se odešle požadavek pomocí I/O a dostane se nazpět jako plný výpis typu Json, nebo XML. Teprve po doručení se už mimo databázi odstraní nechtěné údaje (vetšinou záznamy z relačních databází typu název sloupce:hodnota, nebo <uzel>hodnota<> pro XML).
     Díky takovým požadavkům a potřebám se stala Base paradoxně progresivní. To co nemá ve vlastním vybavení je plně nahrazeno možností vzdálené správy, ošetřením přístupů a rolí, využívání internetových propojení a služeb a i snadnou editaci dík Calcu, nebo různým import/export filtrům.


     Mezi námi (uživateli) osobně doporučuji Calc místo Base když je potřeba pracovat s vícesloupcovými 2D tabulkami. Calc plně nahradí a předčí vše co uměla Foxka. V mnohém předčí i Base. Jde jen o to k čemu databázi potřebujeme.
     Například v "nativní" databázové podobě je možné postavit účetnictví. Výhodou tohoto prostředí je pouze zadávání nových položek dík "formům" a to zejména proto, že se dá velice dobře ošetřit přístup do editace. Výstupy se ale provádí do formulářů Calcu, nebo Writeru - v těchto funkcích je Base neohrabaná a uživatelsky nepřívětivá, i když to lze udělat jen z prostředí Base. - Potom ale bez výpočtů a ne v té podobě jak si představujete. Base není rovna Foxce, ale stále žije a bude i v budoucnu.


    Ještě si dovolím poznámku nakonec. Databázoví specialisté jsou určitá elita v rámci IT. Bohu žel tito rychle odborně umírají se svým typem databáze. Proto je odborníků zoufale málo - mají nízkou životnost a když se musí, nebo chtějí po této cestě vydat, tak si za to účtují opravdu dobré peníze. Pro Vás by bylo asi dobré, abyste ze svých představ o "druhé Foxce" ustoupil a smířil se s tím co Base může a nemůže. Vše co je potřeba se dá udělat celkem dobře a snadno jenom jinými postupy a nástroji.


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

#13 1. 11. 2020 09:43:32

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Ale já nechci být specialista smile
Já si chci napsat pro sebe jednoduchou "appku". Ale spojit dva řetězce přece umí kterákoliv součást LibreOffice. A i ty "tabulky-browsy" přece musejí mít nějaké vnitřní metody, které řídí jejich chování. Třeba při přidávání záznamu, přechodu na jiný řádek/sloupec...
Je k nim někde přístup?

Offline

#14 1. 11. 2020 19:39:33

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

Re: Jak sloučit jméno a příjmení? - VYŘEŠENO

Roj napsal(a)

Potřeboval bych udelat browse (tabulku ve formulari), kde by bylo zobrazeno trim(KrJmeno)+" "+trim(Prijmeni)
Když to dám v úpravě formuláře vypsáním do karty Data v okně Vlastnosti "SeznamUkazek.KrJmeno + SeznamUkazek.Prijmeni", neprotestuje to, ale sloupec je v režimu výpisu dat zcela prázdný.
Zkoušel jsem ručně SQL napsat dotaz, ale žádnou syntaxi mi to nepobralo. Možná tu syntaxi neovládám.
mám LO Verze: 6.4.6.2

Vyřešeno! (mám geniální kamarádky) big_smile

SELECT ( "klient"."KrJmeno" || ' ' || "klient"."Prijmeni" ) AS "Klient", "Udalosti"."Stalose", "klient"."KontaktID" FROM "Udalosti" INNER JOIN "klient" ON "Udalosti"."KontaktID" = "klient"."KontaktID" ORDER BY "Udalosti"."Datum", "Udalosti"."Cas"

funguje v browsu přesně tak, jak má wink

Offline

Zápatí