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

#2 Base » Programové ovládání prvku formuláře - VYŘEŠENO » 8. 11. 2019 08:01:56

hdplot
Odpovědí: 3

Mám databázový rozmulář s makry. Na formuláři je tlačítko a makrem ovládám text zobrazený na tlačítku. Příkaz vypadá takto:


ThisComponent.Drawpage.Forms.getByName("Form1").Button1.Label = "ABCD"


a způsobí, že příslušnému tlačítku "Button1" na formuláři "Form1" se změní zobrazený text na ABCD. Vše funguje jak má. Pokud ale chci stejným postupem změnit nějakou jinou vlastnost (např. šířku tlačítka) a napíšu obdobný příkaz:


ThisComponent.Drawpage.Forms.getByName("Form1").Button1.Width = 5


dostanu chybovou hlašku:


BASIC runtime error.
Property or method not found:Width


Ukázku s chybou Width jsem zvolil záměrně, protože Label i Width se vyskytují v editačním formuláři prvku a předpokládal jsem, že tak, jak jsou označené, tak se také interně volají (Label ano, Width bohužel ne). Ve skutečnosti ale nechci měnit ani Label, ani Width, ale barvu tlačítka, která je v editačním formuláři označená jako Background color, Zde jsem zkoušel .....("Form1").Button1.bgcolor.... a jiné podobné varianty, ale vše neúspěšně.


Možnosti jsou dvě: Buďto lze programově měnit pouze některé vlastnosti prvků formuláře (a s tím nic nenadělám), nebo je chyba v zápisu a klíčové slovo Width neexistuje (obdobně bgcolor atd) ale správně tam patří nějaké jiné klíčové slovo. ??? jaké ???


Kde lze seznam těchto příkazů najít ?
Díky za radu

#3 Re: Base » SQL dotaz na prázdnou položku - VYŘEŠENO » 5. 11. 2019 07:36:28

Děkuji za radu už to funguje. Podstatné bylo to, co napsal neutr "samotné "NULL" nic bez předpony neznamená. Správný dotaz je IS NULL tedy "je prázdné"."


Takže celý dotaz pak vypadá následovně:


SELECT * FROM "Platby_A_Dokumenty" WHERE "Dokument" IS NULL


nebo pro variantu "není prázdné" pak takto


SELECT * FROM "Platby_A_Dokumenty" WHERE NOT "Dokument" IS NULL


PS - jen pro info, používám AOO, takže tato syntaxe platí i na této konfiguraci

#4 Base » SQL dotaz na prázdnou položku - VYŘEŠENO » 4. 11. 2019 13:45:10

hdplot
Odpovědí: 3

Mám databázovou tabulku (databáze plateb a dokladů) s položkami (pro zjednodušení) ID, částka, popis, odkaz, kde odkaz je textové pole s uvedeným odkazem na soubor (faktura vztahující se k hodnotě částka). Ne ke všem částkám je vyplněn údaj odkaz - tedy existují záznamy, ke kterým není přiřazena faktura. Potřebuji napsat SQL dotaz, který vyfiltruje záznamy - je faktura X není faktura.

Jedná se mi tedy o syntaxi dotazu, jak se zeptat, jestli je dané pole prázdné, nebo jestli obsahuje nějaký (libovolný) řetězec znaků. Jěco jako je NULL nebo NOT NULL, ale nedokážu přijít na správkou syntaxi.

Díky za radu

#6 Writer » Mazání položek typu "Pole" - VYŘEŠENO » 3. 8. 2019 09:44:02

hdplot
Odpovědí: 2

Mám dokument, ve kterém existuje několik položek typu Pole (názvy kapitol) které jsou provázané na Obsah dokumentu. Tyto pole byly vytvořeny pomocí menu "Vložit" - "Pole" - "Jiné" - "Křížové odkazy" - "Vložit referenci". Následně pak byly vytvořené vazby na část dokumentu s Obsahem.


Nyní vytvářím jiný dokument, který vznikl z původního Uložit jako ... Tento nový dokument edituji a některá z polí již nejsou potřebná. Pokud je ale v dokumentu i v obsahu smažu, stále zůstávají v tabulce "Vložit" - "Pole" - "Jiné" - "Křížové odkazy", přestože již nejsou funkční, přesněji řečeno již vůbec neexistují. Tímto se ale tabulka stává stále nepřehlednější. Jak správně postupovat, aby po smazání pole i křížového odkazu zmizel tento prvek i ze seznamu, a jak dodatečně odmazat z tabulky ty prvky, které tam v soušasné době již zůstaly po smazaných odkazech.


Děkuji za radu

#7 Re: Calc » Vnořené logické výrazy - VYŘEŠENO » 31. 7. 2019 05:34:29

Jenom na vysvětlenou - v buňce E6 je počet zubů ozubeného kola. Je to ze 70% pro moji vlastní potřebu, ale i v případě využití jinými lidmi to nejsou hlupáci, i z logiky věci tam číslo menší než cca 5 nedají. Něco mezi 5 až 9 už by někoho mohlo napadnout, ale norma to nepřipouští - proto ta hláška "je menší než 9" Pokud by to mělo být exaktní, tak správně by tam měla být kontrola, že v E6 je celé číslo (12,5 zubu taky neexistuje :-) ) a to taky nedělám. Nemá to být "blbuvzdorný" výpočet, ale pomůcka pro zrychlení práce.


A tak to funguje, takže díky za pomoc

#8 Re: Calc » Vnořené logické výrazy - VYŘEŠENO » 30. 7. 2019 13:28:17

Používám AOO verzi 4.1 a ta funkci IFS NEZNÁ. Proto jsem se snažil to slepit pomocí funkce IF a tam jsem se utopil v těch závorkách. Jak byto tedy bylo s použitím pouze IF ?

EDIT:

Tak s vaší napovědou už jsem to dal :-)

=IF(D6<9;"zubů < 9";IF(D6<=16;72;IF(D6<=40;60;50)))

Díky

#9 Calc » Vnořené logické výrazy - VYŘEŠENO » 30. 7. 2019 12:16:42

hdplot
Odpovědí: 6

Už se s tím trápím celý den, asi jsem už vyzkoušel všechny možnosti zápisu kromě té správné. V buňce D6 mám číslo, které měním (zadávám). Do buňky D31 potřebuji dosadit podle D6 jiné číslo dle následujícího:

D6 < 9 do D31 dosaduji text "zubů < 9"
D6 je 9 až 16 do D31 dosazuji číslo 72
D6 je 17 až 40 do D31 dosazuji číslo 60
D6 > 40 do D31 dosazuji číslo 50

Vždycky se někde ztratím v závorkách, takže buď to hlásí error, nebo dává nesprávné výsledky. Jak má tedy správně zápis vypadat ?

#10 Base » Funkce Group pro pole typu Datum » 16. 4. 2019 14:54:54

hdplot
Odpovědí: 1

Mám tabulku, která obsajuje jedno pole "Datum" a jedno pole "Cislo" Potřebuji napsat dotaz, který určí součet polí "Cislo" podle toho, jak seskupí pole "Datum", tedy něco takového:

SELECT "Datum", SUM( "Cislo_1" ), COUNT( "Datum" ) FROM "Table1" GROUP BY "Datum"

Toto fubguje ale pouze v případě dvou stejných datumů. Jak ale postupovat, pokud chci seskupit např. podle celého měsíce, tedy vyřadit z porovnávání dny (nebo pro případ celého roku, tedy vyřadit v potovnávání dny i měsíce)

Díky za radu

#11 Re: Calc » Prázdná buňka ve vzorci - VYŘEŠENO » 16. 10. 2017 06:42:11

Jak prosté - nechápu, proč mě to nenapadlo :-(

#12 Calc » Prázdná buňka ve vzorci - VYŘEŠENO » 14. 10. 2017 07:13:52

hdplot
Odpovědí: 2

Mám vzorec =IF((ABS(C33))<60;C44;0), který potřebuji upravit tak, aby místo 0 dosazoval prázdnou buňku. Zkoušel jsem výraz NULL, ale bylo to špatně. Jaký správný výraz použít ??

Děkuji za radu

#13 Re: Calc » Rozbalovací seznam hodnot v buňce - VYŘEŠENO » 1. 6. 2017 12:45:24

Zkusil jsem a chápu význam slova "seřadit". Nechápu ale proč u "U" profilů mu to vadí a chová se jinak než u "I" nebo "UPE" profilů které taky vlastně seřazené nebyly. (Ale to už je jen tak pro zajímavost, nevadí když zůstane příčina neznámá. Důležité je že to začalo fungovat)

#14 Re: Calc » Rozbalovací seznam hodnot v buňce - VYŘEŠENO » 1. 6. 2017 11:59:47

Oddíl U seřazený vzestupně je "U" mezera a pak čísla vzestupně. Stejně je to i pro I - "I" mezera a čísla vzestupně. Přesto I funguje vždy a U jenom někdy.


Nicméně doplnění čtvrtého parametru pomohlo, takže to vidím jako vyřešené - Díky

#15 Re: Calc » Rozbalovací seznam hodnot v buňce - VYŘEŠENO » 1. 6. 2017 11:48:53

Tak mě to tedy nefunguje ani po smazání mezery. Zkusil jsem místo mezery doplnit podtržítko a taky bez úspěchu. Když jsem změnil text na z "U" na "UPE" (což je taky jeden z typů profilů, ale s jinými rozměry), tak to začalo fungovat i s tou mezerou

#16 Re: Calc » Rozbalovací seznam hodnot v buňce - VYŘEŠENO » 1. 6. 2017 06:24:30

Vracím se k úplně prvotnímu dotazu tohoto vlákna. Po vyřešení jsem si vytvořil tabulku s hodnotami I profilů (jak bylo naznačeno v dotazu), která fungovala bez problémů. Nyní jsem tuto tabulku doplnil o U profily (stejný postup, stejné vzorce, jenom rozsah buněk je jiný) a tabulka nefunguje. Správně zobrazuje hodnoty pro U 30 až U 80 a pak pro U 160. Pro ostatní hodnoty doplňuje znak #N/A. Nejlépe to asi bude patrné z přiložené ukázky - https://ulozto.cz/!jYZN7Ql9g1IU/i-profily-ods


Vůbec netuším, kde by mohla být chyba. Testováno na OO 4.1.1, OO 4.1.3 a LO 5.0.0. Poradíte ?

#18 Calc » Tlačítko v xlsm souboru v AOO nefunguje - VYŘEŠENO » 5. 4. 2017 13:14:05

hdplot
Odpovědí: 2

Zdravím a prosím o radu. Mám soubor vytvořený v Excelu (xlsm), který obsahuje dialogy a makra. Otevření v AOO proběhne bez problémů (bez jakékoliv výhružné hlášky) a po otevření vypadá soubor vizuálně stejně jako v Excelu. Bohužel ale je v listu umístěno jedno tlačítko (velké přes asi 6 buněk listu), které má vyvolat dialog pro zadání hodnot. (Ty se pak makrem zpracovávají a přepisují do příslušných buněk sešitu.) V Excelu vše funguje, ale v OO nelze na tlačítko vůbec kliknout - po kliknutí se vždy zvýrazní některá z buněk pod tlačítkem. Tedy nemůžu vůbec spustit dialogové okno a následně pak testovat eventuální funkčnost nebo nefunkčnost maker, protože se zaseknu hned na počátku.


Je chyba někde v nastavení zobrazení, nebo je to obecně problém otevření souboru Excelu v OO. Díky za radu.

#19 Re: Base » Univerzální použití makra v různých formulářích - VYŘEŠENÝ » 13. 2. 2017 08:54:50

Ano - toto je v zásadě to, co jsem chtěl. Jenom jsem vyhodil tem MsgBox a rozhodování ponechávám na makru podle jiné podmínky. Díky za radu

#20 Re: Base » Univerzální použití makra v různých formulářích - VYŘEŠENÝ » 10. 2. 2017 12:09:57

No jde o to, že formů je několik a zobrazují různá data z různých tabulek. Jednou se tedy jedná např. Form A který kouká do tabulky A (výkresy) a zobrazuje odkaz na soubor výkresu. Podruhé se jedná o Form B, který kouká do tabulky B (účetnictví) a zobrazuje odkaz na soubor faktury. Potřetí pak třeba o Form C, který kouká do tabulky C (zákazníci) a zobrazuje odkaz na web zákazníka. Podle výběru konkrétního řádku z tabulky v daném konkrétním formu se mi nabídne konkrétní výkres (nebo faktura atd.) k otevření. Tento odkaz zpracuje makro a tlačítkem se odkaz otevře. Ale form pro výkresy kromě odkazu zobrazuje i jiné údaje vztahující se k výkresu. Totéž form pro zákazníky a podobně. Nelze je tedy nijak slučovat do jednoho formu.


Tedy z pohledu spouštěných odkazů se jedná o zcela nezávislé tabulky i formuláře. Jde jen o to, že PRINCIP SPOUŠTĚNÍ odkazu je vždy stejný - tedy použité makro je prakticky stejné, jenom názvy prvků formuláře se mění, protože se jedná o různé nezávislé formuláře. Na každém z formů je vždy jen ten jeden typ odkazu a jenom to jedno tlačítko, které to otevírá. Jestli jsem tedy dobře pochopil vaši odpověď, tak by to tak nešlo, protože v rozbalovacím menu nelze nabízet jednou výkres a jednou fakturu - jedná se o dvě rozdílné věci a dva rozdílné formuláře.


ANO - to P.S. by asi bylo řešení. Mít na každém formuláři nějaký rozlišovač, o jaký form se jedná (třeba skrytý Label). Ten načíst a pak v makru podle tohoto přiřadit správné jména prvků, které by byly v makru připravené jako konstanty

#21 Base » Univerzální použití makra v různých formulářích - VYŘEŠENÝ » 10. 2. 2017 09:36:00

hdplot
Odpovědí: 4

Mám soubor Base, který obsahuje několik formulářů. V jednom z formulářů používám makro na otevření odkazu, který je uložen v tabulce databáze.


Sub PathRun
  dim oForm1, oForm2 as object
  dim sPathRun as string
  oForm1=ThisComponent.Drawpage.Forms.getByName("FiltrForm")
  oForm2=oForm1.getByName("SubForm")
  sPathRun=oForm2.getByName("Path").text 'Načte hodnotu odkazu z pole databáze'
  oForm2.getByName("Button_odkaz").targeturl = sPathRun 'uloží tuto hodnotu do tlačítka - odkaz pro otevření URL'
End Sub


Odkaz potom otevírám klepnutím na tlačítko pomocí akce Open dokument/web page


Nyní bych toto (podobné) makro chtěl použít v dalších asi 5 různých formulářích. Funkce bude stejná, ale prvky na ostatních formulářích se jmenují pokaždé jinak (jedná se o jména "FiltrForm", "SubForm", "Path", "Button_odkaz"). Přejmenovávat jednotlivé formuláře a prvky se mi nechce - má to vazbu i na jiná makra a celé by se mi to rozházelo a sesypalo. Existuje nějaké jiná možnost, jak výše uvedené makro udělat univerzální, nebo musím napsat pět identických maker, které se budou lišit jenom jmény odkazovaných prvků?

#22 Re: Calc » Samovolná změna vzorce - VYŘEŠENO » 9. 2. 2017 15:04:39

Problém považuji za vyřešený, ale protože řešení je několik, tak to shrnu.


1) Řešení dle neutr. - Po úpravě maker již vše funguje správně a hodnoty měsíců se aktualizují tak, jak mají. Nevýhodu vidím v tom, že pro každý měsích se musí nastavit trochu jiný vzorec pro sumarizaci (jiná podmínka), takže toto je nutné si připravit v makrech buďto předem s rezervou - výhled do budoucnosti, nebo makra průběžně každý měsíc aktualizovat


2) Řešení dle hdplot. - Nedalo mi to a vyzkoušel jsem variantu, kterou jsem zde v diskusi zmiňoval - tedy nevytvářím žádné pomocné sloupce Rok=Year(buňkaSdatumem) a Měsíc=Month(buňkaSdatumem), ale podmínku směřuji přímo do sloupce s Datumem z databáze, tedy =SUMIF(RozsahBuněkSdatumem;".12.2016";RozsahBuněkShodnotami). Takto lze použít původní neupravovaná makra a RozsahyBuněk se aktualizují v obou sloupcích (podmínka i sčítané hodnoty), protože se jedná o původní buňky vyplňované původním makrem. Nevýhoda je stejně jako u neutr, tedy je nutné si připravit vzorce pro jednotlivé měsíce v buňkách dopředu - výhled do budoucnosti, nebo buňky průběžně každý měsíc doplňovat o další řádek


3) Řešení dle lp. - Sám bych to nedal dohromady, ale podle návodu to šlo dobře a funfuje to také správně. Toto bych řekl, že je v daném případě nejlepší řešení, protože s postupným přidáváním dalších měsíců a roků do databáze se kontingenční tabulka sama automaticky rozšiřuje, takže jednou napsané řešení je bez úprav funkční neustále.


Vyzkoušeno a pro danou databázi dávají všechna 3 řešení rovnocenné výsledky, takže použít může každý co je mu bližší, nebo v návaznosti na ještě nějaké další požadované výstupy a pohledy na zdrojová data. Nicméně i nepoužité řešení bude zdrojem informací pro příště - díky za pomoc

#23 Re: Calc » Samovolná změna vzorce - VYŘEŠENO » 8. 2. 2017 08:42:56

Pro neutr


V zaslané ukázce (znovu přikládám odkaz) - Ukázkové soubory - je soubor CALCu a soubor BASE na kterých to testuji. Předpokládal jsem, že když si jej stáhnete a soubor BASE zaregistrujete, tak můžete provést testy, o kterých jsem psal a ze kterých bude zřejmý problém. Nelze to jenom prohlédnout, musí se stím experimentovat. Stačí jenom do BASE doplnit nebo odmazat nějaký záznam (nebo více záznamů) a následně načíst a aktualizovat CALC a po několika takovýchto pokusech by mělo být zřejmé, v čem je problém. Myslím, že je to určitě tím, že CALC při práci makra přidává nebo maže řádky, ale nějak "podivně" - v některých sloupcích se to projeví a v některých ne.


Pokud se týká toho barevného označení řádku, je to dobrý nápad, který by mohl zvýraznit problém. Zkusím to. Bohužel jsem teď dva dny byl bez PC, takže jsem zatím nikam nepokročil.

#24 Re: Calc » Samovolná změna vzorce - VYŘEŠENO » 6. 2. 2017 12:51:35

To je právě ta chyba - původně tam byly oba úseky shodné, ale po aktualizaci dat (v případě že v databázi došlo k navýšení počtu záznamů) se meze úseků "samy od sebe" změní a proto to přestane fungovat. Zkuste si to na přiložené ukázce - Ukázkové soubory - bude to asi jasnější. Musíte samostatně otevřít databázi, přidat na konec aspoň jeden záznam, databázi zavřít, otevřít Calc a aktualizovat tlačítkem a měla by vám vyskočit chyba - buňka se sumarizací (červená na záložce MojeData) Když tento chybný vzorec opravíte, bude vše OK. Po zavření Calcu, doplnění databáze a opětovném otevření calcu se chyba opět objeví.


Zkuste si ještě i variantu, že se záznamy v databázi nepřidávají, ale naopak mažou (i když v mém konkrétním případě to tak nikdy nebude) Pak se vzorce pro určení měsíce z datumu změní na =MONTH(A#REF!), vzorce před a za koncem tabulky zůstanou správně (např. =MONTH(A24) a =MONTH(A25) ) a mezi ně se jakoby vloží ten chybný.


Napadá mě jenom to, že makro při aktualizaci maže a vsouvá buňky a Calc na to automaticky reaguje a aktualizuje vzorce, které se těchto buněk týkají. Jako řešení bych viděl to, že podmínku nebudu kontrolovat na buňky mimo rozsah, který makro ovlivňuje, ale pouze na buňky z tohoto rozsahu. Tedy místo vytvoření pomocného sloupce s měsícem (a kontroly na tento sloupec) je nutné provést kontrolu přímo na sloupec s datumem - něco takového jako že buňka obsahuje část textu - tedy např. leden 2017 což jsou datumy "1.1.2017" až "31.1.2017" kontrolovat na to, že obsahují text ".1.2017" tedy kontrolní součet by byl takovýto:  =SUMIFS(B2:B10000;A2:A10000;".1.2017"), přičemž ve sloupci B jsou sečítané hodnoty a ve sloupci a jsou datumy.


Na zkušební databázi to funguje. Zkusím ještě ostrá data a větším množství podmínek a dám vědět

#25 Calc » Samovolná změna vzorce - VYŘEŠENO » 6. 2. 2017 09:07:03

hdplot
Odpovědí: 10

Tento dotaz navazuje na témata viz. Zobrazení dat z BASE v CALCu a následně  Seskupení hodnot podle datumu .


Všechno funguje jak má v případě, že při spuštění souboru došlo v databázi pouze k úpravě stávajících záznamů. V tom případě se data v tabulce CALC aktualizují a vše se řádně zobrazí. Pokud ale v původní databázi dojde ke změně počtu záznamů (vždy se jedná o přidání, takže počet záznamů se zvýší), tak se záznamy aktualizují správně, tabulka v CALCu se rozšíří, ale následný dotaz pro třídění záznamů podle měsíce se "sám od sebe" změní podle počtu záznamů následujícícm způsobem:


Např. původní tabulka záznamy v buňkách A2 až C30, sčítat budeme sloupec B, podmínka je v sloupci E, dotaz zní =SUMIF(E2:E1000;1;B1:B1000). Po přidání tří záznamů a opětovné aktualizaci se tabulka se záznamy upraví (doplní data), takže záznamy jsou v buňkách  A2 až C33 a dotaz se samovolně upraví na =SUMIF(E2:E1003;1;B1:B1000) - tedy rozsah pro test podmínky se o 3 zvýší, rozsah pro součtová data se nemění. V tom okamžiku se výsledek neprovede a je doplněn error.


Dotaz tedy zní, proč dojde ke změně vzorce pro podmínečný součet, a pokud ke změmě dojde, tak proč ne na obou položkách - tedy mělo by se měnit E1000 na E1003 a současně také z B1000 na B1003

Zápatí

Používáme FluxBB