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

#1 Re: Base » Poškozená databáze » 7. 1. 2024 21:57:36

gln

Dobrý den přeji…


Díky moc za podnětné rady. Jak už jsem psal výše, vážím si takových snah…


Poškozenou databázi zaregistrovanou v LO mám. Vyzkoušel jsem tedy otevření tabulek v Calcu (vůbec mne tento postup nenapadl) – nicméně se nepodařilo. Hlásí chybu, že k tabulkám nemůže přistoupit, nelze je otevřít… Problém bude, myslím, v těch tabulkách, které asi budou „pasé".
Co se týká rozbalení poškozeného souboru, tak to mne vůbec nenapadlo. Dík za info. Zkoušel jsem to, soubor jsem rozbalil a nestačil se divit, co vše tam je… Použité scripty pro tabulky a dotazy, nastavení formulářů… Sice „vyšší dívčí" pro následné použití, ale je to tam. Ale samotná data tam bohužel nejsou.
Ono o tom svědčí, podle mne, že samotná velikost souboru se zmenšila na polovinu… Takže mohu rekonstruovat formuláře, scripty… ale to teď nepotřebuji, zálohu souboru mám a požívám. Ale do budoucna se to může hodit…


S Javou se laborovat zatím neodvážím. Nerad bych si „rozhodil" fungující věci.
Možná to zkusím v okamžiku, než budu přeinstalovávat novou verzi OS. Místo povýšení bych udělal novou, čistou instalaci a před tím tedy mohu experimentovat.... Ale, to jen když bude čas…


V každém případě ještě jednou dík za rady… smile


Jirka

#2 Re: Base » Poškozená databáze » 22. 12. 2023 21:58:05

gln

Dobrý večer…


Děkuji za Vaše návrhy a postřehy. Vážím si toho….


Se šablonami jsem mimo LO Base nepracoval. Ani jsem databázi nikam nepřesouval. Je stále ve stejném adresáři, jednotlivé kopie (jako zálohy) jsou také trvale ve „svém" adresáři. Tyto kopie jsou v pořádku...


Jako zdroj dat používám jenom tabulky a dotazy, které jsou součástí dotčené databáze, jsou v ní vytvořeny a nejsou s ničím propojeny.


Samotný zápis dat provádím jen prostřednictvím formuláře, který je také součástí dotčené databáze… Jsem tak zvyklý a vyhovuje mi to.


Databázi používám jen pro sebe jako zdroj informací a nabytých zkušeností… Dříve jsem si poznámky vedl normálně ve Writeru, ale zde to bylo nepřehledné. Proto jsem zapátral v čase, na dobu mého aktivnějšího mládí... smile a zvolil k zápisu poznámek Base.


Jirka

#3 Base » Poškozená databáze » 21. 12. 2023 12:20:48

gln
Odpovědí: 5

Ahojte všichni…


Stala se mi taková věc, které úplně nerozumím… Proto bych se Vás tady chtěl zeptat na Váš názor. Řešení jsem hledal, ale nenašel. Problém je, myslím, dost specifický...

Shrnu tedy můj problém v několika bodech.


1. Používám Mageia Linux.


2. V programu  LibreOffice Base (7.4.5.1) mám vytvořenu databázi „chleba.odb". V této databázi bylo 47 záznamů. Docela podrobně si píšu poznámky k vedení kvasu (časy, teploty, množství) a následné poznámky k přípravě těsta a pečení chleba.


3. Soubor této databáze („chleba.odb") se jeden den, mně neznámým způsobem, poškodil. Nejde otevřít ani jeden formulář a ani jedna tabulka. Na tabulky nejde v programu LO Base ani přejít. Program hlásí chybu:

Nepodařilo se připojení ke zdroji dat „chleba".
Stav SQL: S1000
Kód chyby: -29
File input/output error /home/gln/Dokumenty/Pečení/chleba.odb.backup java.io.EOFException: Unexpected end of ZLIB input stream at /home/iurt/rpmbuild/BUILD/libreoffice-7.4.5.1/connectivity/source/drivers/jdbc/Object.cxx:173

(Vůbec nevím co je adresa /home/iurt/rpmbuild/… V systému taková neexistuje.)


4. Jiné soubory databází (jsou v jiném adresáři) jsou v pořádku. Původní soubor "chleba.odb" měl cca 68 KiB, v současnosti má poškozený soubor velikost cca 33 KiB.


5. V době, v den, kdy k poškození souboru došlo se provedla aktualizace těchto balíčků:

- java-1.8.0-openjdk-1.8.0.392.b08-1.mga8.x86_64
- java-1.8.0-openjdk-headless-1.8.0.392.b08-1.mga8.x86_64
- java-11-openjdk-11.0.21.0.9-1.mga8.x86_64
- java-11-openjdk-headless-11.0.21.0.9-1.mga8.x86_64

6. Je pravděpodobné, že jsem v okamžiku této aktualizace měl otevřen formulář této databáze – ten den jsem pekl.


7. Soubor uvedené databáze mám naštěstí zálohovaný. Jednak při vytváření databáze jsem si postupně pořizoval kopie (v jiném adresáři), stejně tak mám zálohované kopie už hotové databáze z doby, kdy jsem ji plnil daty. Takže v konečném výsledku mi chybí 10 záznamů, které byly vyplněny v období od poslední zálohy do doby, kdy k poškození došlo.
Tedy se vlastně  nic moc nestalo… Ale… V tom období jsem zrovna měnil dodavatele mouky. A v těch 10-ti záznamech mám několik důležitých poznámek, které by se mi docela hodily.


8. Chtěl bych se tedy zeptat zkušenějších. Může nějak souviset poškození databáze s aktualizací Javy?
A dá se to nějak opravit? Osobně si myslím, že i vzhledem ke zmenšení velikosti dotčeného souboru jsou data nenávratně pryč…


Děkuji za Váš čas a omlouvám se za délku příspěvku… Jirka.

#4 Re: Base » Vytvoření podmínky "IF" » 12. 8. 2009 09:13:09

gln

Ahojte lidi...

Tak jsem nakonec napsal i na fórum www.oooforum.org a tam jsem dostal radu použít místo IF příkaz CASEWHEN. V OOO Base je nastavena databáze HSQL.
Syntaxe příkazu je tedy: 

SELECT CASEWHEN("CS_titulky"=TRUE, 'české titulky', 'bez českých titulků') AS "titulky" FROM "film"

Příkaz CASEWHEN jde i vnořit a použít např. v tomto tvaru:

SELECT CONCAT((CASEWHEN("CS_titulky"=TRUE, 'české titulky, ', 'bez českých titulků, ')), "jine_titulky") AS "titulky" FROM "film"

Stejně tak jde i jednoduše spojovat:

SELECT CASEWHEN("kresleny"=TRUE, 'kreslený, ', '') + CASEWHEN("pohadka"= TRUE, 'pohádka, ', '') + CASEWHEN("rodinny" = TRUE, 'rodinný, ', '') + CASEWHEN( "romanticky" = TRUE, 'romantický, ', '' ) + CASEWHEN( "western" = TRUE, 'western, ', '') + CASEWHEN("komedie" = TRUE, 'komedie, ', '') + CASEWHEN("dobrodruzny" = TRUE, 'dobrodružný, ', '') + CASEWHEN("drama" = TRUE, 'drama, ', '') + CASEWHEN("krimi" = TRUE, 'krimi, ', '') + CASEWHEN("spionazni" = TRUE, 'špionážní, ', '') + CASEWHEN("thriller" = TRUE, 'thriler, ', '') + CASEWHEN("akcni" = TRUE, 'akční, ', '') + CASEWHEN("historicky" = TRUE, 'historický, ', '') + CASEWHEN("politicky" = TRUE, 'politicky, ', '') + CASEWHEN("valecny" = TRUE, 'válečný, ', '') + CASEWHEN("fantasy" = TRUE, 'fantasy, ', '') + CASEWHEN("horor" = TRUE, 'horor, ', '') + CASEWHEN("scifi" = TRUE, 'sci-fi, ', '') + CASEWHEN("dokument" = TRUE, 'dokument, ', '') + CASEWHEN("hudebni" = TRUE, 'hudební, ', '') + CASEWHEN("art" = TRUE, 'art, ', '') AS "zanr" FROM "film"

Třeba to tu někomu pomůže... (kdo tápá jako já...) :-)

Hezký den, Jirka.

#5 Base » Vytvoření podmínky "IF" » 10. 8. 2009 13:36:02

gln
Odpovědí: 3

Dobrý den všem...

Potřebuju poradit s tvorbou databáze v OpenOffice.org Base. (verze 3.1, používám na Linuxu) S tímto programovým balíkem pomalu začínám, přecházím z MS Office. Jsem tedy naprostý začátečník – to předesílám. :-)
Mám databázi filmů, které mám koupeny, cca 350 filmů. Tu mám zatím v MS Access a převádím ji do Base. Podařilo se mi převést tabulku, nadefinoval a upravil jsem si zadávací formulář, základ funguje, prakticky jde používat – jen ji potřebuju „dokrupičkovat".
O co mi tedy jde?

1.Mám tabulku s názvem „film".
2.V této tabulce je mimo jiné sloupec „CS_titulky", který obsahuje pole typu BOOLEAN (YES/NO) – v zadávacím formuláři databáze je to zaškrtávací políčko
3.Potřebuju napsat dotaz (příkaz), který by mi zobrazil v jiném textovém poli (prohlížecí formulář) podmínku ve smyslu, že pokud je políčko zaškrtnuto uvede se např.: „české titulky", v opačném případě bude uvedeno např.: „bez českých titulků". (ono to pak bude složitější, bude tam další příkaz SQL --> spojení s dalším polem „další titulky",  ale to až později.)
4.Myslel jsem si, že by tento základní SQL příkaz měl znít:
SELECT IF ("CS_titulky"=1, 'české titulky', 'bez českých titulků') FROM "film"
(Podle různých nápověd, co jsem našel na NETu by to mělo být v pořádku...)
   
5.Ale tomu tak není, SQL mi hlásí chybu:
Stav SQL: 37000
Kód chyby: -11
Unexpected token: IF in statement [SELECT IF( "CS_titulky" = 1, 'české titulky', 'bez českých titulků' ) FROM "film"]

A je jedno, jestli zadám "CS_titulky" = 1 nebo "CS_titulky" TRUE nebo "CS_titulky" = TRUE...

6.Přičemž v Base mi SQL v dotazech a tabulkách funguje. Mám vyzkoušeno a ve formuláři nebo sestavě nebo v dotazech používám např. příkazy:

a)SELECT CONCAT( "jazyk", CONCAT( ', ', "dalsi_jazyk" ) ) FROM "film"
  (spojí dvě textová pole do jednoho a mezi slova přidá čárku)
b)SELECT COUNT (*) FROM "film"
  (vrátí počet záznamů v databázi)
c)SELECT "CS_titulky"  FROM "film" WHERE "CS_titulky"=1
  SELECT "CS_titulky"  FROM "film" WHERE "CS_titulky"=TRUE
  (oba příkazy vrátí pouze řádky se zaškrtnutou hodnotou – TRUE)

Tak nevím... Vypadá to, jakoby ten příkaz IF neexistoval... Můžete mne nějak „nakopnout", kterým směrem jít? Doufám, že jsem napsal srozumitelně, o co mi jde. Ještě podotýkám, že opravdu začínám a s SQL nemám zatím žádné zkušenosti...

V konečné fázi budu potřebovat napsat dotaz, který porovnává asi 21 polí typu BOOLEAN. Ale to až v případě, pokud se mi podaří nadefinovat ten jednoduchý... :-)
V MS Access je to příkaz:
=(IIf([drama]=TRUE;' drama,';'')+IIf([art]=TRUE;' art,';'')+IIf([rodinny]=TRUE;' rodinný,';'')+IIf([pohadka]=TRUE;' pohádka,';'')+IIf([krimi]=TRUE;' krimi,';'')+IIf([thriller]=TRUE;' thriller,';'')+IIf([valecny]=TRUE;' válečný,';'')+IIf([horor]=TRUE;' horor,';'')+IIf([komedie]=TRUE;' komedie,';'')+IIf([kresleny]=TRUE;' kreslený,';'')+IIf([spionazni]=TRUE;' špionážní,';'')+IIf([akcni]=TRUE;' akční,';'')+IIf([historicky]=TRUE;' historický,';'')+IIf([scifi]=TRUE;' sci-fi,';'')+IIf([dokument]=TRUE;' dokument,';'')+IIf([hudebni]=TRUE;' hudební,';'')+IIf([dobrodruzny]=TRUE;' dobrodružný,';'')+IIf([western]=TRUE;' western,';'')+IIf([romanticky]=TRUE;' romatický,';'')+IIf([fantasy]=TRUE;' fantasy,';'')+IIf([politicky]=TRUE;' politický,';''))

Dík za jakékoliv rady...  Jirka. (P.S. Omlouvám se za délku příspěvku...)

Zápatí

Používáme FluxBB