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

Langage SQL Discussion :

Problème de concaténation de champ sous sql server 2005 express


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut Problème de concaténation de champ sous sql server 2005 express
    Bonjour a tous, voila mon problème :

    J'ai un formulaire sous vb.net qui contient des combobox ...
    Pour les remplir je dois utiliser une requête faisant appel à deux tables et dont 3 champs d'un des deux tables doivent être concaténé pour être affiché dans un seul et même label.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            strSql = "SELECT NumBeneficiaire, NomBeneficiaire, PrenomBeneficiaire, " & _
                     "AdresseBeneficiaire + CPBeneficiaire + VilleBeneficiaire as ligne_adresse_Bene, " & _
                     "TelephoneBeneficiaire, Portablebeneficiaire, NumInt, NomInt, PrenomInt, VilleInt, TelFixeInt, TelPortInt " & _
                     "From BENEFICIAIRES, INTERVENANTE"
    mais lorsque j'éxécute la requete, j'obtiens le message d'erreur suivant :
    "Echec de la conversion de la valeur varchar "blablabla" en un type de données int."

    L'erreur vient bien de ma concaténation de mes 3 champs et je pense que ce sont les + qui crèent un problème.

    j'ai donc essayer avec des & et des | mais j'ai toujours un message d'erreur.

    Quelle est donc le symbole à utiliser ou qu'est ce que je fais qui est mauvais ??

    d'avance merci pour l'aide que vous pourrez m'apportez

    @++
    dubidon

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 770
    Points
    23 770
    Par défaut
    Essaie en castant sous forme de chaîne de caractères le code postal, qui est la seule donnée qui peut sembler numérique et donc poser problème.

    ced

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    pourrais tu préciser stp, je vois bienc e que veux dire caster, mais comment pourrais je caster mon code postale dans ma requete ??

    @++
    dubidon

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 400
    Points
    28 400
    Par défaut
    En SQL, l'opérateur + est utilisé pour l'addition.
    Pour la concaténation, il faut utiliser ||
    Pour être certain d'avoir le bon type de données, il faut convertir les valeurs numériques en chaînes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text || CAST(num AS CHAR(n))

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 770
    Points
    23 770
    Par défaut
    Et oui, mais si Microsoft respectait les standards, ça se saurait
    Du coup, dans SQLServer, c'est le "+" qui sert à concaténer les chaînes de caractères (comme en VB d'ailleurs. Tiens, tiens, tiens...)

    Pour le cast, ça donne quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT AdresseBeneficiaire + CAST(CPBeneficiaire AS varchar(5)) + VilleBeneficiaire AS ligne_adresse_Bene
    FROM...
    ced

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    merci pour l'info pour le cast, je ne savais pas que l'on pouvais le faire dans une requête, décidément ce langage me surprendra toujours

    Pour les || j'avais déja essayé, et j'ai refais l'essai pour revérifier mais là çà me dit syntaxe incorrecte vers '|'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            strSql = "SELECT NumBeneficiaire, NomBeneficiaire, PrenomBeneficiaire, " & _
                     "AdresseBeneficiaire || CPBeneficiaire || VilleBeneficiaire as ligne_adresse_Bene, " & _
                     "TelephoneBeneficiaire, Portablebeneficiaire, NumInt, NomInt, PrenomInt, VilleInt, TelFixeInt, TelPortInt " & _
                     "From BENEFICIAIRES, INTERVENANTE"
    J'ai aussi testé en mettant les || entre '' mais là il me dit "syntaxe incorrecte vers CPBeneficiaire

    merci pour l'aide que vous m'apportez

    @++
    dubidon

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Et oui, mais si Microsoft respectait les standards, ça se saurait
    Du coup, dans SQLServer, c'est le "+" qui sert à concaténer les chaînes de caractères (comme en VB d'ailleurs. Tiens, tiens, tiens...)
    Merci beaucoup, çà fonctionne parfaitement yahooooo

    merci a tous pour l'aide que vous m'avez apportez et surtout la rapidité vraiment impréssionant, si la terre fonctionnait dans le même état d'esprit d'entre aide et de partage des connaissances, le monde serait bien meilleur

    encore merci beaucoup

    @++
    dubidon

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

Discussions similaires

  1. Création d'un plan de maitenance sous SQL SERVER 2005 EXPRESS
    Par matimat2k4 dans le forum Développement
    Réponses: 1
    Dernier message: 26/10/2009, 22h44
  2. problème d'accent avec sqlcmd sous SQL Server 2005
    Par zut94 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/02/2008, 11h22
  3. Réponses: 2
    Dernier message: 18/10/2007, 16h44
  4. Problème pour créer un DSN pour SQL-Server 2005 Express
    Par momoG dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/07/2007, 16h36
  5. Réponses: 1
    Dernier message: 13/12/2006, 14h18

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