Dám sem všechny varianty, které jsem schopný z toho dostat.
Dne 8.3.2011 21:25, Jiri Spitz napsal(a):
Pár doplňujících dotazů:
1. V tom dotazu máte nebo nemáte nastaveno "Spustit SQL příkaz přímo"?
Dotaz upravuju jako SQL, spouštím přímo z okna úpravy dotazu
Spustit přímo: ANO
Dotaz [1]:
SELECT * FROM ip WHERE ip << inet '10.0.0.0/8' ORDER BY ip
funguje
Dotaz [2]:
SELECT * FROM ip WHERE ip << inet :param ORDER BY ip
chyba, ve "Více" 3 řádky:
1) chyba
Datový obsah nemohl být načten.
2) chyba
Kód chyby: 1
pq_driver: [PGRES_FATAL_ERROR]ERROR: column "inet" does not exist at
character 30
(caused by statement 'SELECT * FROM ip WHERE ip << inet ORDER BY ip')
3) Informace
SQL příkaz, který chybu způsobil:
SELECT * FROM ip WHERE ip << inet :param ORDER BY ip
Dotaz [3]:
SELECT * FROM ip WHERE ip << :param ORDER BY ip
Opět chyba jiná, druhý řádek ve "Více":
Kód chyby: 1
pq_driver: [PGRES_FATAL_ERROR]ERROR: operator does not exist: inet <<
at character 27
(caused by statement 'SELECT * FROM ip WHERE ip << ORDER BY ip')
Pokud nastavím Spustit přímo: NE
chybová hláška vypadá prakticky vždy stejně a ve "Více" jsou tři řádky:
1) chyba
Stav SQL: HY000
Kód chyby: 1000
Syntax error in SQL expression
2) chyba
Stav SQL: HY000
Kód chyby: 1000
3) chyba
Stav SQL: HY000
Kód chyby: 1000
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Ani u jednoho z obou dotazů s parametrem si při spuštění dotazu OOo
nřekne o vyplnění paramteru. Rovnou na mne vykvákne chybu.
2. Ve formuláři založeném na SQL u datového zdroje máte nebo nemáte
nastaveno "Analyzovat SQL příkaz"?
Pokud vypnu analýzu příkazu, při použití dotazu [1] se ukážou data v
read-only tabulce (tam jsem se prve nedopracoval).
Dotazy s parametrem jsem testoval na podformuláři, jsem tak schopný zase
z OOo vydyndat nějakou chybu. Pokud formulář s podformulářem založeným
na parametrickém dotazu otevřu, v podformuláři žádná data nejsou. Pokud
v návrhu formuláře ve Vlastnostech formuláře na záložce Data kliknu na
"..." u propojovacích polí, dostanu chybu, že nelze získat sloupce z dotazu:
u dotazu [2] se ve "Více" dočtu - 2 řádky:
1) Informace
Nelze získat sloupce 'SELECT ip, pouziti FROM ip WHERE ip << inet :param
ORDER BY ip'.
2) chyba
Kód chyby: 1
pq_driver: [PGRES_FATAL_ERROR]ERROR: column "inet" does not exist at
character 40
(caused by statement 'SELECT ip, pouziti FROM ip WHERE ip << inet
ORDER BY ip')
u dotazu [3] 2. řádek:
Kód chyby: 1
pq_driver: [PGRES_FATAL_ERROR]ERROR: operator does not exist: inet <<
at character 37
(caused by statement 'SELECT ip, pouziti FROM ip WHERE ip << ORDER BY
ip')
Pokud analýzu dotazu zapnu, dostávám podobné hlášky, ale jsou tam navíc
ještě ty nesmysly, které jsem psal v prvním e-mailu.
3. Ty chybové hlášky vrací Postgresql nebo je vrací OOo, aniž by příkazy
na server vůbec dorazily (dá se to vyčíst ze stromu událostí, když si
necháte zobrazit podrobnosti chybové zprávy).
Lze vyčíst z výše uvedeného.
Ta hláška se SQL_LESS signalizuje, že nebyl správně interpretován
operátor <<. Buďto alespoň jeden z operandů nebyl typu inet, nebo to OOo
prostě neumí správně interpretovat.
Nevím, jestli to hodit na krk OOo nebo SDBC driveru.
Té druhá hláška signalizuje naprostou syntaktickou desinterpretaci SQL
příkazu, ale důvod z toho vyčíst neumím. Možná by pomohlo vložit sem
přesnou kopii těch SQL příkazů.
Snad stačí to, co jsem napsal nahoře...
Pokud bych chtěl do dotazu navíc zasekat parametr:
SELECT * FROM ip WHERE ip << :param ORDER BY ip
přestává fungovat i formulář založený na dotazu.
Zde si nejsem jist, zda parametrem předáváte hodnotu typu inet a nebo
textový řetězec. V prvním případě by to mělo fungovat, ve druhém musíte
dotaz upravit:
SELECT * FROM ip WHERE ip << inet :param ORDER BY ip
Testoval jsem samozřejmě obě varianty (právě z toho důvodu, že se neví,
v jakém tvaru bude parametr předán. Ono ale nefunguje ani jedno, ani druhé.
--
Zbyněk Burget
Nádražní 224
798 26 Nezamyslice
tel: 588 580 000, 739 930 931
IČ: 606 88 220
DIČ: CZ7210184674
--
-----------------------------------------------------------------
To unsubscribe send email to [email protected]
For additional commands send email to [email protected]
with Subject: help