White space dans les champs de saisie d'une BDD

Résolu
thefloo Messages postés 7 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 28 avril 2009 - 3 déc. 2008 à 22:31
thefloo Messages postés 7 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 28 avril 2009 - 4 déc. 2008 à 17:48
Bonjour,

J'ai un petit souci au niveau des white space dans ma base de donnée :

Je travaille sous visual express 2005. J'ai créé un formulaire sur lequel se trouvent des textBox liés à une base de donnée. L'enregistrement se fait très bien, mais lorsque je rappelle mes données, les textBox liés à la BDD sur des nvchars se remplissent de white space si tous les caractères du nvchar n'ont pas été utilisé.
Heu...est ce que je suis clair là ?...
Si je paramètre un champ nvchar(20) et que lors de la saisie je rentre un mot de 10 lettres, lorsque je rappellerai mes données, mon textBox se remplira de 20 caractères ; 10 lettres et 10 WS.

Ma question est : comment fait pour virer tous ces ws ?
J'avais récupéré un petit code source sur lequel les champs ne se remplissaient que de ce qu'on leur rentrait. Mais quand moi je refais la même chose avec les mêmes paramètres de BDD ben....marche pô.
Est ce que quelqu'un saurait ce que j'oublie ?...

Thefloo

2 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
4 déc. 2008 à 07:08
Hello,

Je commence par une question. Quel est le type des données dans la base, car je connais nchar et nvarchar, mais pas nvchar.
Si c'est du nchar, le comportement est normal, car c'est un champs de taille fixe (il remplis automatiquement le reste avec des espaces).
Le nvarchar, par contre ne devrait pas faire ce genre de problèmes, car il ne prend que la place nécessaire.

Si comme je le pense tu as une colonne de type nchar, tu as deux solutions :
- La mettre en nvarchar
- Si tu ne peux pas modifier le type il faut faire un trim. Tu peux le faire dans ta requête SQL  avec RTRIM(tonchamp), ou dans le code .net, TaTtextBox.Text = DBValue.Trim();

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
3
thefloo Messages postés 7 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 28 avril 2009
4 déc. 2008 à 17:48
Merci pour cette réponse express des plus claires !!

Alors, nvchar, c'est un type que j'ai créé après que mes 2 neuronnes encore en activités se soient touchés. (On mettra ça sur le compte de la fatigue, d'accord ?...)
Donc, j'utilisais bien du nchar. ^^
J'ai basculé le tout en nvarchar et Ô merveille, ça marche !

J'en profite pour développer un peu plus pourquoi je cherchais à virer ces blancs :

Mes requêtes du style
 WHERE maTable.monTexte LIKE '%' + @maRecherche + '%"
ne fonctionnaient pas. J'avais vu que sur l'application où ça marchait il n'y avait pas de blancs dans la base de données.
Est ce que ce type de requête ne fonctionne que sur du nvarchar ?...
En tout cas pour moi ça marche maintenant sur le nvarchar.

Merci encore SharpMao !!

Thefloo
0
Rejoignez-nous