Errore durante la conversione variante in letto [Delphi XE + IBObjects 4.9.12]
-
23-10-2019 - |
Domanda
La mia configurazione:
Delphi XE
Firebird 2.1
IBObjects 4.9.12
Di Windows 7 64bit
ottengo un'eccezione quando si tenta di impostare un valore a un parametro IBOQuery ( "Impossibile convertire variante di tipo (UnicodeString) in tipo (doppio)").
L'eccezione viene sollevata dalla procedura TIB_Column.SetAsVariant in IB_Components.pas (linea di 42795). Per creare questa situazione, solo cercare di passare una stringa a un parametro Data:
myQuery.paramByName('mydate').AsString := DateToStr(IncDay(Now,5));
Negli ultimi 25 giorni sto cercando di risolvere questa situazione, ma in lista di sostegno IBO Non ho risposte.
Qualcuno ha un'idea?
Soluzione
architettura delle IBObjects è la conversione (in un momento di esecuzione) tutti i parametri, campi, ecc per stringa o varianti. Se il parametro 'mydate' è 'DateTime' (numerico) di tipo allora si deve riempire con un valore di tipo corespondent. Non è la logica per riempire un parametro di tipo 'numerica' con una stringa ...
Prova questo
myQuery.paramByName ( 'MyDate') AsDateTime:. = Ora + 5; // è la stessa risposta di David.
o
myQuery.paramByName ( 'MyDate') AsFloat:. = Ora + 5; // o IncDay (Ora, 5)
Con i migliori saluti,
Radu