Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: b.antonino - Dicembre 30, 2016, 10:09:49 am

Titolo: FB3 TSQLquery insert parameter null
Inserito da: b.antonino - Dicembre 30, 2016, 10:09:49 am
Buongiorno
Utilizzo firebird 3.0.1 con sqldb, quando cerco di fare una insert di una query parametrica su un campo boolean mi da il seguente errore:
DBConnection : Execute :
-Dynamic SQL Error
-SQL error code = -804
-Incorrect values within SQLDA structure.

questo è il codice che uso:
Codice: [Seleziona]
 
  LocalQueryWrite.SQL.Text:='insert into vetture (mod, telaio, esito) values (:p1, :p2, :p3) returning id';
  LocalQueryWrite.ParamByName('p1').AsInteger:=StrToInt(LocalVett[1]);
  LocalQueryWrite.ParamByName('p2').AsString:=LocalVett[2];
  LocalQueryWrite.ParamByName('p3').AsBoolean:=False; //(LocalVett[3]='True'); // StrToBool(LocalVett[3]);
  LocalQueryWrite.Open;

Sembra quasi che non supporta i campi boolean.
Qualcuno sa come risolvere il problema?

Grazie
Titolo: Re:FB3 TSQLquery insert parameter null
Inserito da: xinyiman - Dicembre 30, 2016, 11:43:18 am
Se commenti il terzo parametro il resto funziona?
Titolo: Re:FB3 TSQLquery insert parameter null
Inserito da: b.antonino - Gennaio 02, 2017, 11:53:09 am
Buongiorno e buon anno nuovo,
si il resto funziona perfettmente.
Titolo: Re:FB3 TSQLquery insert parameter null
Inserito da: xinyiman - Gennaio 02, 2017, 11:57:55 am
Una domanda, cosa usi zeoslib o il connettore rilasciato da lazarus?
Sembrerebbe essere un bug.

Hai provato a mettere il codice dentro un ramo try except e vedere il messaggio di errore che ti salta fuori?
Titolo: Re:FB3 TSQLquery insert parameter null
Inserito da: xinyiman - Gennaio 02, 2017, 11:58:16 am
http://www.lazaruspascal.it/index.php?page=83
Titolo: Re:FB3 TSQLquery insert parameter null
Inserito da: SB - Gennaio 07, 2017, 08:13:11 am
Per quel che è la mia esperienza, preferisco non usare campi boolean ed uso piuttosto campi integer proprio per evitare problemi di questo tipo. Gli interi si sa cosa sono, i boolean mah... chi dice che la catena da freepascal a firebird li tratti sempre allo stesso modo? (anche se le librerie dovrebbero fare la corretta conversione...)

Tornando al problema, scusa la domanda banale, il campo esito è booleano?
Titolo: Re:FB3 TSQLquery insert parameter null
Inserito da: b.antonino - Gennaio 08, 2017, 07:33:07 pm
Scusate il ritardo, ma sono fuori per un altro lavoro.
@xinyiman
Non uso zeos, ma sqldb di lazarus,
con un try/except l'errore è sempre quello
penso sia un problema di ibconnection e le query parametriche, perché se passo il parametro all'interno della stringa sql tutto funziona, il fatto è che non mi piace comporre la stringa sql dinamicamente, mi trovo bene (mi sembra più ordinato) con i parametri.
Mi ricordo di aver visto segnalato in un post di qualche anno fa qualcosa di simile sul forum di lazarus e mi pare veniva detto che era stato fixato, ma non ricordo il post e forse non è stato nemmeno sistemato, appena ho tempo provo con la 1.6.2.
@SB
Fino ad adesso ho lavorato con FB2.1 e FB 2.5, era il primo lavoro con FB3 e visto che c'erano i booleani li ho utilizzati, pensavo le librerie lo gestivano senza problemi, invece c'è ancora qualcosa da sistemare.
Si il campo esito è booleano.