Bonjour à tous,
Je développe une application client serveur avec une base sous fire Bird (Alterna. D’Interbase). Je possède plusieurs tables (évidemment ) composées de champs de type char et de dimensions différentes. Jusque là, rien de spécial…
L’application est développée sous Delphi via les composant interbase.
A plusieurs moments, j’insert et je récupère des données de la base via des Tedit ou de Tmemo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE DOMAIN memo AS BLOB SUB_TYPE 1 SEGMENT SIZE 1000; create table societe ( Soc_Id int NOT NULL, Soc_nom char(30) NOT NULL, Soc_Fax char(12), Soc_email char(30), Soc_Pageweb char(50), Soc_Commentaire memo, Soc_User_id Int, Soc_type CHAR(20), Soc_mode_id Int, PRIMARY KEY (Soc_Id) );Le champ memo de ma base à une dimension non prédéfinit puisque c’est un type que j’ai créée précédemment. Lorsque je lis une information dans un champ de ma base et que je l’affiche dans un Tedit (par exemple), il se passe un truc bizarre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 edt_fax.Text :=IBQuery_cli.FieldByName('soc_fax').AsString; edt_mail.Text :=IBQuery_cli.FieldByName('soc_email').AsString; edt_web.Text :=IBQuery_cli.FieldByName('soc_pageweb').AsString; Memo_comment.Text :=IBQuery_cli.FieldByName('soc_commentaire').AsString;
Si le champ est du type memo, pas de problème, la chaîne renvoyée est nickel. Mais si elle d’un type char(X), la chaîne renvoyée est bonne mais elle concaténée d’espace jusqu’à la taille maximum (X)
Exemple : si j’ai un champ
Cli_nom char(50),
Et que je lui affecte la chaine ‘developpez.com’
La valeur renvoyée par :
IBQuery.FieldByName(‘Cli_Nom’).AsString
Sera ‘developpez.com________________________________________‘ et non ‘developpez.com’, je trouve ça dommage de devoir traiter les chaîne à chaque lecture !
Existe t’il un moyen de remédier à ce problème ou ce problème est un fait ?
Merci d'avance...[/u][/b][/code]
Partager