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

#1 14. 9. 2015 14:24:58

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 116

Výpis položek databáze od 1 po první definovanou hodnotu - VYŘEŠENO

Mám tabulku databáze která má dvě pole (pro příklad zjednodušuji). Jedno pole pořadové číslo, druhé pole libovolný řetězec znaků - textové pole. Potřeboval bych udělat výpis všech řádků od 1 až po první pole, které bude obsahovat předem definovaný řetězec. Ten se ale může opakovat víckrát a výpis se musí zastavit při nalezení prvního takto definovaného záznamu. V mém příkladu je tento předem definovaný záznam "§§§" Tedy např. když záznamy budou "1" "A", "2" "KLMCV", "3" "§§§", "4" "gft", "5" "§§§", "6" "XXYYZZ" tak dotaz vypíše záznam 1 až 3, když potom záznamy budu editovat a třetí záznam změním třeba na "3" "FDRBN", tak dotaz vypíše záznam 1 až 5.

Lze toto nějak realizovat. Vůbec netuším, z které strany na to jít.

Díky za radu

Editoval hdplot (16. 9. 2015 07:09:44)

Offline

#2 14. 9. 2015 15:49:59

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

Re: Výpis položek databáze od 1 po první definovanou hodnotu - VYŘEŠENO

Tento problém by vyžadoval výpočtové pole. To ale Base nemá. Jedinou variantou je "alias", což je ale jen jednoduchý vzorec který je omezen na zápis výsledku výpočtu z řádku. Kdysi jsem potřeboval podobnou věc - řízení podle hodnoty předchozího řádku. Dotaz se mi nepovedlo sestrojit asi proto, že řádku číslo 1 nepředchází nic a podobně za posledním zápisem také nic není.
     Ve vašem případě by se to asi dalo řešit pomocí jednoho, nebo dvou aliasů. V prvním dotaz zda existuje hledaná hodnota ve sloupci 2.
     První případ předpokládá že pokud je nalezena shoda, vypíše se číslo řádku, pokud ne - vypíše se NULL. SQL by pak měl vyhodnotit minimum sloupce 3 a vypsat řádky 1 až MIN(-1). To ale visí na možnosti postavit takový dotaz, což se nemusí podařit. Otázkou je také možnost nastavit proměnnou například x=x+1, nebo logické true/false která by byla čitelná vzorcem aliasu (tohle půjde asi jen pomocí makra).
     Duhý případ předpokládá možnost spustit makro (funkci), která spustí cyklus iterace a zavolá SQL pokud narazí na hledaný parametr.


     V každém případě by to makrem mělo jít. Musím přiznat, že neznám možnosti Firebirdu, který by to mohl zvládnout lépe nežli HSQL.


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 16. 9. 2015 07:09:04

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 116

Re: Výpis položek databáze od 1 po první definovanou hodnotu - VYŘEŠENO

Je to hotové, tak jenom pro případné zájemce uvádím svoje řešení


Použil jsem makro. Do tabulky databáze jsem přidal ještě jedno pole typu TRE/FALSE. Makro pak dělá to, že v cyklu prochází všechny záznamy tabulky. Kontroluje hodnotu textového pole. Na počátku má nastavenou hodnotu TRUE a tuto zapisuje do nového pole. V okamžiku, kdy narazí na hledanou hodnotu textového pole ("§§§"), nastaví si hodnotu FALSE a do konce tabulky pak už zapisuje bez dalších kontrol tuto hodnotu FALSE. Následně pak nad tabulkou spustím dotaz, který vypíše pouze záznamy s hodnotou TRUE. Celá tabulka bude vždy obsahovat max. 1000 záznamů, takže je to celkem svižné a funkční.

Offline

Zápatí