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 :

Requête sur champ chaine de caractère [WD15]


Sujet :

WinDev

  1. #1
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 632
    Points
    632
    Par défaut Requête sur champ chaine de caractère
    Bonjour,

    dans une application j'ai une numérotation qui peut être numérique ou alphanumérique ( c'est le client qui choisit). Le champ est bien entendu en format chaine de caractère.

    Je cherche a faire une requête sur une base qui a utilisé uniquement le mode numérique ( N° 100 / 101 / .... 2500 / 2501 / ...) qui permettrait de choisir les articles de 120 à 150 , à l'aide par exemple d'un BETWEEN, mais comment faire pour passer une telle requête SQL ?

    Je suis en HF Classic

    Merci d'avance et bonne journée à tous

    Olivier

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour

    Tu peux transformer le type de ta zone par un CAST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ... FROM ... WHERE (CAST TAZONE AS INTEGER) BETWEEN 120 AND 150
    ça fonctionne en HF Classic

  3. #3
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 632
    Points
    632
    Par défaut
    Salut, merci pour ta réponse, j'ai essayé un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sSQL = "SELECT CAST(Numero AS INT)  FROM articles"
    mais j'ai une erreur :

    ...Mot AS inattendu !

    Une idée ?

    Bonne journée


    Olivier

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 162
    Points : 308
    Points
    308
    Par défaut
    Salut,

    La clause BETWEEN s'applique aussi bien les chaines de caractères que les numériques. Donc, en faisant cette requête SQL sans CAST, ça devrait également marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT ... FROM ... WHERE TAZONE BETWEEN 120 AND 150
    Cordialement

  5. #5
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Citation Envoyé par wd_newbie Voir le message
    ...Mot AS inattendu !

    Une idée ?
    Ben ... ajoute un AS
    Oups désolé, j'avais lu "mot AS attendu"

    J'ai essayé par un sqlexec et dans l'outil WDSQL et ça passe très bien
    Comment tu exécute? ta requête ?

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Citation Envoyé par PointCarreJo Voir le message
    Salut,

    La clause BETWEEN s'applique aussi bien les chaines de caractères que les numériques. Donc, en faisant cette requête SQL sans CAST, ça devrait également marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT ... FROM ... WHERE TAZONE BETWEEN 120 AND 150
    Faux, à ne surtout pas faire
    Avec des chaînes de caractères tu fais par exemple un BETWEEN 1 AND 2 et ça te ramène : 12, 123 ... etc. bref tout ce qui commence par 1

  7. #7
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 632
    Points
    632
    Par défaut
    Le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    sSQL est une chaine 
     
    sSQL = "SELECT * FROM articles WHERE CAST(Numero AS INTEGER) BETWEEN 1015 AND 1020"
     
     
    rs est une source de données
     
    si pas HexecuterequeteSQL(rs, hrequetedefaut, sSQL) alors
     
    	erreur(Herreurinfo())
    sinon
     
    hlitpremier(rs)
     
    pour tous rs
    	trace(rs.Numero + " ==> "  + rs.Libelle)
    fin 
    fin

    J'ai fait un test avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sSQL = "SELECT * FROM articles WHERE WL.Val(Numero)  BETWEEN 1015 AND 1020"
    ça marche mais ça me semble pas franchement élégant ...


    Olivier

  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Ton code fonctionne bien en Windev 18, je suppose que le CAST n'était pas supporté en version 15
    PCSOFT ajoute régulièrement des ordres SQL supportés, mais l'aide ne mentionne pas les versions compatibles

    Il ne reste plus que l'appel à la fonction WLangage (WL.Val)

  9. #9
    Membre confirmé Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 632
    Points
    632
    Par défaut
    Je vais me rabattre sur le WL.Val en attendant le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WL.CasserTirelire(wdversion19, '1000€')
    .

    Merci pour votre aide , en attendant la 19 , je passe en résolu !

    Excellente journée à tous

    Olivier

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

Discussions similaires

  1. [AC-2010] mettre une condition sur une chaine de caractères dans une requête sql
    Par freeman3869 dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/06/2015, 11h45
  2. une requête sur les chaine de caractère
    Par ajor dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 13/01/2009, 16h24
  3. Requête sur les 10 premiers caractères d'un champ
    Par Trebor_ dans le forum Débuter
    Réponses: 2
    Dernier message: 29/10/2008, 16h40
  4. xsl : test sur les chaine de caractère
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/07/2005, 15h43
  5. Réponses: 7
    Dernier message: 17/07/2003, 11h00

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