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

Odpovedet emailem