Salut à tous,
Je suis sur un GROS problème avec une DLL web, faite en D7 entrep, liée à une base SQL Server 2000.
Dans le datamodule, j'ai un TSQLTable relié à une TDataSet Provider; lui-même lié à un TClientDataSet.
Lorsque je fais un insert des valeurs clés ['1', 'non', '0107056'], tout se passe bien, et les valeurs sont correctes dans la base.
Mais si je fais ensuite un FindKey['1', 'non, '0107056'], ça échoue.
Pourquoi ? Eh bien en faisant des tests, je me suis aperçu qu'un fieldbyname.asString du premier champ renvoie
au lieu de la valeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part '1 '
qui est stockée dans la base SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part '1'
Donc DBExpress ajoute autant d'espace à la fin de la valeur jusqu'à atteindre la taille totale du champ (8 caractères) !!!!!!!!!
COLOSSALE ERREUR !!!!
D'où viennent donc ces espaces qui sont ajoutés automatiquement si la valeur est inférieure à la taille du champ, et surtout, comment s'en débarasser ????
J'ai vérifié que le TClientDataSet a bien DisableStringTrim à False.
Du coup, ça fout en l'air tous mes FindKey.
Si je passe par une requête SQL via un TSQLQuery, je récupère bien la valeur '1', sans espaces !
Mais j'ai besoin de passer par des FindKey pour gérer les traitements.
Est-ce que quelqu'un connait ce problème ??
Partager