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

WinDev Discussion :

Concaténer chaines dans une requete wdr [WD14]


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Points : 60
    Points
    60
    Par défaut Concaténer chaines dans une requete wdr
    Bonjour à tous,

    je souhaite concaténer deux ou trois chaines situés dans une table HyperFileSQL:
    L'utilisation de la fonction CONCAT() ne fonctionne pas. (disponible sous windev14 non ?).

    Voici ma synthaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT 
    Commande.Serveur AS Serveur,
    Commande.dateprise AS dateprise,
    Commande.type AS type,	
    Ligne.IDCommande AS IDCommande,
    CONCAT(Ligne.option1, Ligne.option2) AS options,
    Ligne.quantité AS quantité,
    Produit.nom AS nom
    FROM 
    Ligne, Produit, Commande
    WHERE
    ...
    Quelqu'un aurait-il une idée de mon erreur ?

  2. #2
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour,
    Je ne connais pas HyperFile mais pourquoi ne pas faire simplement :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
    Commande.Serveur AS Serveur,
    Commande.dateprise AS dateprise,
    Commande.type AS type,	
    Ligne.IDCommande AS IDCommande,
    (Ligne.option1 + Ligne.option2) AS options,
    Ligne.quantité AS quantité,
    Produit.nom AS nom
    FROM 
    Ligne, Produit, Commande
    WHERE ...

    Sinon Option1 et Option2 sont bien des chaines ?

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    je pense que c'est la syntaxe de SQL Server qui est utilisée donc chaine1 + chaine2 .

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Points : 60
    Points
    60
    Par défaut
    Merci pour vos réponses.

    Les deux solutions fonctionnent pour concaténer une chaîne, à savoir utiliser la fonction CONCAT(Ch1, ch2, ..., chx) et ch1 + ch2.

    Cependant, mon problème n'est pas résolu pour autant car il ne provient pas de la méthode de concaténation employée mais en fait du fait que l'une des chaînes que je souhaite concaténer est égale à NULL. (Quand il n'y pas d'option à la ligne de commande, précisement).

    Auriez-vous une idée de la façon dont je peux concaténer plusieurs chaînes même si l'une d'elles est égale à NULL ?

  5. #5
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Regarde du côté de la fonction NVL

    La fonction NVL permet de remplacer les valeurs nulles d'une colonne par une valeur de substitution. Les fonctions IS_NULL et IF_NULL sont identiques.
    IS_NULL est utilisé en SQL Server et IF_NULL avec les bases MySQL ou Progress.

    Format d'utilisation :


    NVL(Nom Colonne, Valeur de substitution)
    Ton Exemple :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
    Commande.Serveur AS Serveur,
    Commande.dateprise AS dateprise,
    Commande.type AS type,	
    Ligne.IDCommande AS IDCommande,
    (NVL(Ligne.option1,'') + NVL(Ligne.option2,'')) AS options,
    Ligne.quantité AS quantité,
    Produit.nom AS nom
    FROM 
    Ligne, Produit, Commande
    WHERE ...

    Cet exemple est propre à HyperFile, en SQL server on utilise la fonction IsNull

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Points : 60
    Points
    60
    Par défaut
    Merci de votre réponse.

    Génial, ça fonctionne, c'est le principe que j'ai trouvé en attendant d'avoir quelque chose de propre comme ce que vous m'indiquer: j'ai en fait réaliser ce principe dans mes requêtes d'insert, au lieu de ne rien insérer dans les colonnes options, et donc de laisser la valeur par défaut à NULL, j'ai insérer un simple espace.
    J'aurais aussi pu dans l'analyse, définir la valeur par défaut à un espace au lieu de NULL (moins de code à modifier dans les requêtes d'insertion (assez nombreuses)).

    3 solutions (espace dans l'analyses, espace lors de l'insertion, Utilisation de IsNull), qui fonctionnent très bien.

    Merci de votre (vos) aide(s) !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/05/2009, 16h06
  2. chaine de caractere dans une requete
    Par shepounet dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/03/2009, 15h43
  3. couper une chaine dans une requete sql ss oracle
    Par gnaoui_9999 dans le forum Oracle
    Réponses: 2
    Dernier message: 30/05/2008, 18h28
  4. concaténation date + heure dans une requete
    Par erox44 dans le forum SQL
    Réponses: 2
    Dernier message: 25/04/2008, 10h43
  5. [Accentuation] Comparaison de chaine dans une requete sql
    Par valoji dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/10/2006, 17h28

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