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

#1 24. 1. 2019 13:09:01

webjelen
Člen
Registrace: 24. 1. 2019
Příspěvků: 5

Hledání narozenin podle aktuálního data - VYŘEŠENO

Zdravím, mám tabulku, kde je několik vesnic, každá na samostatném listu. V tabulce jsou sloupce se jmémen, příjmením, datem narození atd. Potřeboval bych poradit funkci, která podle aktuálního data v počítači prohledá včechny listy - vesnice a vytahne jméno a příjmení toho, kdo má dnes, nebo bude mít během 10 dní narozeniny. Předem děkuji za pomoc

Editoval webjelen (4. 2. 2019 07:51:21)

Offline

#2 24. 1. 2019 13:55:11

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 560

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Zkusil bych tuto maticovou funkci (uložit ctrl+shift+enter): =IF(B1:B100>G1;IF(B1:B100<H1;A1:A100;0)) s tím že u mě v B jsou datumy v G1 je =now() na H1 je =now()+10 a v A jsou jména. Vytvoří se matice kde budou obsažena pouze jména která mě zajímají. Těch sloupců bude tolik kolik je vesnic. Na ten výsledek bych pak nasadil kontingenční tabulku, která už jednoduchým filtrem vyhodí pouze jména.


LibreOffice 6.2.

Offline

#3 25. 1. 2019 19:53:55

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

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Já mám názor, že když už kontingenční tabulku, tak jednu na všechna data najednou. Není to o moc složitější. Mohou se například jednotlivé listy zavést jako databázové oblasti, nebo oblasti pojmenované a ty složit pod sebe v jednom listu, nebo v jiném sešitě jako odkazy.
     Na sloučeném listu vystačíme s jediným pomocným sloupcem a nemusí to být matickový vzorec. Stačí dotaz IF, nebo IFS podle kterého můžeme filtrovat i obyčejným automatickým filtrem. Uvedené řešení od pana Trnky sice asi funguje, ale je problém při změně dat - narození, úmrtí, odstěhování, přistěhování a podobně. Toto se dá řešit pomocí pojmenovaných úseků bez toho aby se musel upravovat maticový vzorec.


     Já jsem kdysi udělal něco podobného, ale musel bych to upravit. Je to šablona pro místní samosprávy kde se vyhodnocovala životní výročí a jmeniny, vítání občánků, nebo také osobní údaje typu "imobility", a fyzických postižení které hendikepují některé občany.
     Bylo to napojené jako databáze včetně adres a proto šlo využívat geodetické údaje (Latitude a Longitude) a podle nich plánovat cesty - například pro účely záchranných sborů. Ale původní databázi přestalo MVCR vydávat jako blok XML a tak mám "nejmladší" data asi z roku 2015. Navíc se na to váže GDPR a utajování osobních údajů. Takže jsem tuto myšlenku odložil.
     Databáze se odvíjela od adres v každé ulici a teprve potom tam byli obyvatelé jmenovitě a matričními údaji. Takže tohle bych musel upravit (zjednodušit).


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

#4 25. 1. 2019 20:13:27

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

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Otestujte toto : Jubilea
Je to pomalá verze. Proto jsem vyhledávání jmenin a narozenin oddělil. Rychlá verze funguje jinak - nad daty JSON které jsou v externích foldrech. Zde je vše nacpáno do Calcu.


     
    Můžete s tím dělat cokoliv. Důležité je zachovat pořadí údajů sl A = křestní jméno, sloupec B = příjmení, "C" = datum narození, "D" = adresa. Víc věcí tam nenačítám, ale originálně tam bylo vše od PSČ až po kontakty a kontaktní jména pokud se jednalo o firmy.
    Křestní jména jsou udělaná podle tohoto roku 2019 protože je přechodný, ale svátky bude potřeba korigovat a možná i obsahy jmen. Databáze je ale přímo v makru - s tou neuděláte nic.


    Narozeniny jsem přizpůsobil Vašemu zadání. Nyní se ihned po volbě spustí bez dalšího makro a chvíli to trvá podle kvality stroje. Je to postaveno na Windows 7 - 64 bitů, ale neměl by být problém myslím ani na Linuxu. To jsem ale netestoval. Na konci to vyplivne souhr do Writer kde jsou pod jednotlivýni datumy Obce a vedle nich jméno, příjmení, věk a pod tím ještě adresa.


    Tento sešit si můžete podle své potřeby pojmenovat jak chcete a stejně tak listy podle skutečných obcí a samozřejmě zadat, nebo spíš nakopírovat listy z ostrého sešitu pomocí LIST > VLOŽIT LIST ZE SOUBORU > DÁLE VYBRAT ZDROJ A VYKOPÍROVAT VŠECHNY LISTY zdroje. Následně listy se simulovanými daty smazat.

Editoval neutr (27. 1. 2019 14:54:08)


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 28. 1. 2019 21:16:34

webjelen
Člen
Registrace: 24. 1. 2019
Příspěvků: 5

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Děkuji za Vaše reakce. Způsob od ludviktrnka se mi nějak nedaří zprovoznit, snad na to ještě přijdu. Způsob od neutr - Tabulka je používána na několika PC, Win7-64bit, 32bit  a XP-32bit. Zatím testováno pouze na XP, kde nefunguje - chyba skryptovacího rámce. OO-4.1.3

Offline

#6 28. 1. 2019 22:03:50

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

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Máte pravdu na AOO to nechodí. Je tam použita implementace sešitových funkcí a AOO to nepobere. Bylo to postaveno na LO Verze: 6.1.4.2 (x64) ID sestavení: 9d0f32d1f0b509096fd65e0d4bec26ddd1938fd3. To chodí.
     Otestujte si to na LibreOffice nejlépe verze 6.1.4.2 a popište jestli to tak stačí. Já mohu možná vykoumat jiný postup aby to chodilo pod AOO. Instalace LIbreOffice může být vedle AOO. Když to posoudíte tak to upravím podle potřeby.


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 29. 1. 2019 00:02:08

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 803

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Na aoo to chodí, jen ten vzorec by měl být jiný:
=IF((DATE(YEAR($G$1); MONTH($B$1:$B$100);DAY($B$1:$B$100))>=$G$1) * (DATE(YEAR($H$1); MONTH($B$1:$B$100);DAY($B$1:$B$100))<=$H$1);$A$1:$A$100;0)

Původní vzorec kontroluje, jestli jsou data v intervalu (zbytečné, lze snadno filtrovat).

Offline

#8 29. 1. 2019 06:46:17

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

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Tady je úprava pro AOO Jubilea_2
     Opravený soubor chodí i v LO. Neměl by být problém ani na Linuxu, ale to jsem netestoval. Dejte prosím vědět zda to takto stačí, nebo by bylo potřeba něco předělat. Šlo by to zrychlit, ale nemyslím že by to bylo nějak podstatné. Princip je podobný se vzorci sešitu, ale nyní už nejsou vzorce přímo implementovány do Basicu. Zato princip setřídění podle data narození by šel zrychlit dost výrazně. To ale nevyhovuje asi dalším potřebám evidence obyvatel.
     Zase nevím nad kolika daty to má chodit. Stopněte si přibližně čas jak dlouho to trvá. Když by to bylo více nežli několik málo minut předělám vyhledávání na seřazené seznamy (dělení polovinou) a řazení vrátím do původního stavu po vytvoření výpisu.


     Nyní se hledání opakuje celkem 11x (aktuální den + 10 následujících). Je možné také hledat podle zadání počtu dní. Mám dojem, že Vám jde o to aby se v pátek vygeneroval seznam oslavenců na celý příští týden (7 + 3 = 10) a generuje se v pátek předchozího týdne - vyhledávání obsahuje 2 víkendy. Výpis můžete udělat i na celý měsíc dopředu - proto čas práce počítače může být důležitým faktorem.
     V případech řádově tisíců obyvatel už by to možná chtělo přejít na původní systém načítání databáze typu CSV, nebo JSON (jednoduchý text). Ten je nesrovnatelně rychlejší, ale vyžaduje externí složku s daty která se musí aktualizovat podle potřeby. To není potřeba právě v tomto systému který má vše v sobě a v nesetříděné podobě prohledává list za listem, řádek po řádku. Je to ale pomalé.


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

#9 31. 1. 2019 18:38:34

webjelen
Člen
Registrace: 24. 1. 2019
Příspěvků: 5

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Dobrý den,
opravdu to funguje! Šlo by prosím dát sloupec B-jména, C-příjmení, F-datum narození, E-obec? Záznamů mám přibližně 650. Rychlost tedy není závratná, ale jsem spokojen. Můžu do kódu výpočtu nějak zasáhnout? V souboru od Vás se mi zobrazuje nekorektně menu. Např - soubor - vyroluje se a někde mám nápisy a někde zašedlá místa. Děkuji za Vaše úsilí

Offline

#10 31. 1. 2019 20:04:38

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

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Přepracovat posun není problém. Ale dnes a zítra se k tomu nedostanu. Takže se do toho pustím nejdříve v sobotu ráno. Možná bych něco zvládnul zítra večer, ale tohle asi tolik nepospíchá a vyplatí se to udělat dobře.
     Do kódu vstoupit nemůžete, ale udělám vstup makrem z jiné knihovny kde bude možné upravit výstupy do Writer. Celkem nechápu co myslíte tímto :

webjelen napsal(a)

V souboru od Vás se mi zobrazuje nekorektně menu. Např - soubor - vyroluje se a někde mám nápisy a někde zašedlá místa.

     Ve výstupu Writer je nadpis "NAROZENINY" (další měl být JMENINY a OSTATNÍ - to není realizováno). Potom je odsazení kde jsou datumy - to je celkem 11 "odstavců" s názvem dne. Tady může být problém pokud datum není ve správném formátu (ve zdroji - Calcu).
     Následuje obec a za ní Jméno a Příjmení + věk. Na dalším řádku jsou další údaje. Zde vidím možný problém s tím, že názvy obcí nejsou stejně dlouhé a celý řádek přeteče do nového řádku. Je mi zřejmé, že praktický výpis nebude "hezký".


     Je pravda, že Vaše potřeba bude asi v jiné formě výpisu. Původní výpisy se dělaly do Calcu, který se ukládal buď jako CSV, nebo TXT a z těchto souborů se těžilo rychle. Takže není problém udělat výstupní Calc který bude obsahovat jen relevantní řádky v původním výpisu, nebo jen spřeházené sloupce podle potřeby.
     Myslím, že by stačilo udělat "sterilní" vzor výpisu buď ve Writer, nebo v Calcu. Ve Writer jde zejména o úpravu jak má vypadat první řádek vlastního výpisu, zda má být druhý řádek odsazen ale zejména co na prvním místě.
     Rozložení ve Writer je možné neukládat v ".odt", ale exportovat do PDF - toto použít jako info například pro matriku. Calc by byl vhodnější pro použití "hromadné korespondence", ale to je dle mne drahý způsob. Vyplatí se zřejmě objet oslavence autem a popřát jim osobně + předat dopis s blahopřáním. Stejně se asi nepřeje každému, ale jen těm co mají kulatiny a to bude několik málo desítek každý rok.
     Dokonce možný výstup nikoliv do souhrnu, ale přímo do jmenovitých přání - šablon které se vytisknou včetně obálky - ale bez "Hromadné korespondence". Souhrnný výpis je jen interním dokladem podle kterého se zřejmě určí další (dopis, návštěva, dárek ap.)


     Nadpisy ve zdrojovém Calcu nehrají žádnou úlohu. Makro najde poslední řádek na každém listu a kontroluje nyní jen den a měsíc narození. Při shodě se udělá výpis. Takže nadpisy jako takové se nesmí načíst jako datum (je tam text - "datum narození" a tohle není makrem vyhodnoceno. Proto nevím co myslíte tím "nekorektním menu" - například soubor - "vyroluje se ?". Zbytek vypadá jako divná chyba - někde je to normální a někde zašedlá místa? Název souboru Writer je standardní doplňuje se pouze údaj datumů "od" DD.MM "do" DD.MM. Tam se vyhodnocují datumy a chyba vzniknout nemůže. Zase když by tam nebyl žádný údaj - nebude tam ani zašedlé místo.
     Popisované chyby jsou zřejmě z implementace skutečných dat (vzorová chybu nedělala). Může to být možná typem písma pokud je to tahané z Excelu, ale to musíte upřesnit, nebo poslat kousek vzoru s chybou. Takhle z "voleye" to neodhadnu.


     Takže udělejte prosím vzor jak to má vypadat na výstupu (štábní kultura Writer, nebo Calc) a pošlete ukázku chyby. U Calcu stačí jen určit sloupce které se mají načítat do Writer, nebo jak mají být uspořádané sloupce do výstupu Calc. Vůbec netuším jestli tam potřebujete strukturovanou adresu (kvůli tisku obálek a podobně), nebo zda chcete přímo celý datum narození které nyní vynechávám přestože se podle něho výpis řídí.
     Nevím jestli umíte programovat v našem StarBasic. V tom případě Vám dám přístup do kódu, ale bude to omezeno na jméno a účel bez komerčního užití licence následná CC-BY-SA, verze 4 - pro další šíření.


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

#11 31. 1. 2019 20:58:11

webjelen
Člen
Registrace: 24. 1. 2019
Příspěvků: 5

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

v odkaze jsou obrázky chyby a výstupu. Výstup vyhovuje stejný, jen s popsanými změnami. Jde jen o informaci pro vedení obce. Samozřejmě na to nechvátám, jsem rád že se mi věnujete.
https://uloz.to/!Egi0UynNy7vo/desktop-zip

Offline

#12 2. 2. 2019 10:59:42

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

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Jubilea_3
     Tuhle verzi nebylo těžké upravit, ale raději důkladně otestujte s ostrými daty. Je tam i něco málo navíc včetně měření doby zpracování a volby Info kterou jsem musel hodně upravovat na rozdíl od Vašeho požadavku - to bylo dílem několika málo minut.


  Větší problém je to ztracené menu. U mne je to také. Je to nedostatek AOO. Domnívám se, že je to chyba vysvícení nebo záměr. LO tentýž problém - neaktivní položky menu řeší jinak. AOO používá sice také zašedlé nabídky (neaktuální - "vysvítí se když je volba relevantní"). Tady to ale vypadá, že irelevantní položky (například odkazy, obrázková mapa, objekt, krok zpět ap. které jsou zašedlé) jsou aktivní jsou variantně "neviditelné" místo zašedlé. Spíš jde ale o záměr. Konkrétně dle nápovědy :
     Soubor
Tyto příkazy umožňují práci s aktuálním dokumentem, otevření nového dokumentu nebo ukončení aplikace.
     Nový
Vytvoří nový dokument OpenOffice.
     Otevřít u mně neviditelné
Otevře nebo importuje soubor.
     Poslední dokumenty
Seznam posledních otevřených souborů. Soubor je možné otevřít klepnutím na jeho název.
     Průvodci
Provedou vás vytvořením obchodních nebo osobních dopisů, faxů, porad, prezentací a dalších.
     Zavřít
Zavře aktuální dokument bez ukončení programu.
     Uložit
Uloží aktuální dokument.
     Uložit jako
Uloží aktuální dokument na jiné místo, s jiným názvem či jako jiný typ souboru.
     Uložit vše
Saves all modified OpenOffice documents.
     Znovu načíst
Načte poslední uloženou verzi aktuálního dokumentu.
     Verze
Ukládá a spravuje více verzí aktuálního dokumentu do jednoho souboru. Verze je možné otevírat, mazat nebo porovnávat.
     Export
Uloží aktuální dokument s jiným názvem a formátem na určené místo.
     Exportovat jako PDF
Saves the current file to Portable Document Format (PDF) version 1.4. A PDF file can be viewed and printed on any platform with the original formatting intact, provided that supporting software is installed.
     Odeslat
Odešle kopii aktuálního dokumentu jiné aplikaci.
     Elektronické podpisy
Přidá nebo odstraní elektronické podpisy dokumentů. Tento dialog je možné použít k zobrazení certifikátů.
     Vlastnosti
Zobrazí vlastnosti aktuálního souboru, např. statistické údaje jako počet slov nebo datum vytvoření souboru.
     Šablony
Umožňuje spravovat a upravovat šablony nebo uložit aktuální soubor jako šablonu.
     Náhled ve webovém prohlížeči
Vytvoří dočasnou kopii aktuálního dokumentu ve formátu HTML, otevře výchozí webový prohlížeč a zobrazí v něm HTML soubor.
     Náhled strany
Zobrazí náhled strany pro tisk nebo zavře náhled.
     Tisk
Vytiskne aktuální dokument, výběr nebo určené stránky. Také je možné nastavit volby tisku pro aktuální dokument.
     Nastavení tiskárny
Vyberte výchozí tiskárnu pro aktuální dokument.
     Ukončit
Zavře všechny $ [officename] programy a vyzve vás k uložení změn.


------Viz nápověda OBSAH > SEŠITY > PŘEHLED PŘÍKAZŮ A NABÍDEK > NABÍDKY. Když to porovnáte tak zjistíte, že schází mnoho položek které nemají charakter relevance, ale spíš jde o nefunkční nabídky. Takže těžko určit co je chyba, nebo záměr.

Editoval neutr (2. 2. 2019 11:09:03)


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

#13 4. 2. 2019 08:42:15

webjelen
Člen
Registrace: 24. 1. 2019
Příspěvků: 5

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Funguje. Děkuji

Offline

#14 8. 2. 2019 10:14:22

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

Re: Hledání narozenin podle aktuálního data - VYŘEŠENO

Tak ještě došlo k odladění a soubor je zde Jubilea_4.


     V souboru předchozím je chyba načítání (moje nedbalost při promazávání kódu). Vyhledává se podle počtu záznamů prvního listu, nyní je toto opraveno. Dále byla přidána funkce vyhledávání chyb formátu datumů která je výstupem (report) podobným vlastnímu výpisu narozenin. Mimo toho se chyba podbarví žlutě přímo v sešitě. Je dohledávána chyba "text" místo formátu "datum DD.MM.YYYY". Jiné typy datumů nejsou podporovány, ale možná některé budou fungovat stejně dobře.


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í