Erreur variante à double conversion en [Delphi XE + IBObjects 04/09/12]
-
23-10-2019 - |
Question
Ma configuration:
Delphi XE
Firebird 2.1
IBObjects 4.9.12
Windows 7 64bits
Je reçois une exception lorsque je tente de définir une valeur à un paramètre IBOQuery ( « Impossible de convertir variante de type (UnicodeString) en type (Double) »).
L'exception est soulevée de procédure TIB_Column.SetAsVariant dans IB_Components.pas (line 42795). Pour créer cette situation, essayez de passer une chaîne à un paramètre de date:
myQuery.paramByName('mydate').AsString := DateToStr(IncDay(Now,5));
Au cours des dernières 25 jours, je suis en train de résoudre cette situation, mais dans la liste de soutien IBO J'ai pas de réponse.
Quelqu'un a une idée?
La solution
L'architecture de IBObjects est la conversion (à un moment de l'exécution) tous les paramètres, les champs, etc, à chaîne ou variantes. Si votre paramètre « mydate » est de type « DateTime » (numeric), alors vous devez le remplir avec une valeur de type corespondent. Est-ce pas logique pour remplir un paramètre de type « numérique » avec une chaîne ...
essayer cette
myQuery.paramByName ( 'mydate') AsDateTime:. = Maintenant + 5; // est le même que la réponse de David.
ou
myQuery.paramByName ( 'mydate') AsFloat:. = Maintenant + 5; // ou IncDay (Maintenant, 5)
Meilleures salutations,
Radu