IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

[ADO + D7] PBM insert strings - espaces superflus !?


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut [ADO + D7] PBM insert strings - espaces superflus !?
    Salut à tous,

    J'ai une appli Win32 connectée à une base SQL Server, avec dans le datamodule un composant TAdoConnexion, et plusieurs TADOTable.

    Le problème est lorsque je crée un nouvel enregistrement, tous les champs de type string sont remplis par un nombre d'espaces equivalent à la taille du champ.

    Par exemple, avec un champ 'nom' char(100), si je mets 'toto' comme valeur, à l'affichage j'aurai 'toto' suivi de 96 espaces.
    ce qui me met un cirque pas possible dans l'affichage des fenêtres.

    J'avais déjà constaté ce problème avec les DLL Isapi de mes sites web dynamiques, mais je pensais que c'était un problème d'HTML et de Post de formulaires. Ben non, en fait, c'est bien un problème avec ADO.

    Là, c'est la première fois que j'utilise ADO sur une appli Win32, avant j'utilisais toujours le BDE, et je n'ai jamais eu ce genre de problème.

    J'ai essayer de changer la chaine de connection à la BD, par ODBC ou en direct par nom de serveur implicite, et ça ne change rien.

    Quel est la solution pour ne pase avoir à mettre un trim() à chaque champs de chaque table ???
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    La solution si tu en as la possibilité est de redéfinir tes champs en VARCHAR et non CHAR. Un CHAR complète toujours par des espaces les chaînes plus courtes que la longueur du champ.

    Dans ton exemple, le champ Nom rédéfini en VARCHAR(100) te renverra bien un string de 4 caractères pour la valeur 'TOTO'.

    Si malheureusement tu n'as pas la possiblilité de modifier tes tables, il ne reste que le Trim().

    @+

  3. #3
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    OK, je vais revoir la structure de mes tables, c'est pas un problème.

    Mais je ne comprends pas pourquoi ce phénomène ne se produit pas avec les composants BDE, parce que ce n'est pas la première base ou j'ai des char à la place des varchar standards.

    Merci de l'info
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    A vrai dire je n'utilise jamais le BDE (car obsolète) donc je ne peux t'en dire plus. Mais ce comportement est systématique avec le compos TADO, donc à prendre en compte lors de la création de BDD.

    @+

  5. #5
    Membre du Club Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Points : 54
    Points
    54
    Par défaut
    c'est bien parce que le BDE est obsolète que je me mets à ADO, mais franchement, les composants BDE me semblaient bien plus souples...
    Postes Dév : W7 SP1 / Windev 21 / Delphi 7 Entreprise
    Serveur : W2k12 SP1 + SQL 2014 RC2
    Connexion : OLE.DB

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/05/2006, 09h11
  2. [ADO] Problème d'ajout d'espaces....
    Par charliejo dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/03/2006, 17h38
  3. String & espace
    Par exorus dans le forum SL & STL
    Réponses: 10
    Dernier message: 14/04/2005, 09h40
  4. [ADO][Access]Probleme Insert
    Par rafraf6 dans le forum Bases de données
    Réponses: 11
    Dernier message: 09/04/2005, 19h16
  5. pb insertion avec espaces
    Par devalender dans le forum SQL
    Réponses: 5
    Dernier message: 06/09/2004, 15h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo