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ů: 79

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ů: 2,658

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.


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É

Online

#3 16. 9. 2015 07:09:04

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

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í