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 :

Problème Requête SELECT sur champ texte


Sujet :

WinDev

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut Problème Requête SELECT sur champ texte
    Bonjour à tous.

    Voilà mon soucis. J'ai une BDD HyperFile sous Windev. Je ne peux pas toucher à cette base de données (enfin au niveau des formats). Tous les formats sont en chaines de caractères.

    J'ai alors un champ DATENAISS pour la date de naissance. Si je fait ceci par exemple comme code SQL, ça fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT * FROM Clients WHERE (DATENAISS = '18/01/1946')"
    Par contre, là où ça se complique c'est lorsque je veux sélectionner les dates d'une tranche....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT * FROM Clients WHERE (DATENAISS BETWEEN '18/01/1946' AND '20/01/2000')"
    Là, ça ne va pas du tout il prend un peu tout et un peu rien...

    Y'a-t-il un moyen lors de ma requête SQL de régler ce soucis de format ?

    Je suppose que pour lui, il fait comme si c'était du texte et non pas des dates. Or il faudrait que je puisse le dire lors de ma requête SQL...

    Merci d'avance,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 795
    Points
    30 795
    Par défaut
    Citation Envoyé par arnaud_verlaine Voir le message
    Je suppose que pour lui, il fait comme si c'était du texte et non pas des dates.
    C'est exactement ça !

    Citation Envoyé par arnaud_verlaine Voir le message
    Or il faudrait que je puisse le dire lors de ma requête SQL...
    Je ne connais pas WinDev, mais je suppose qu'il propose une fonction de conversion de chaine formatée en date...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    Merci pour ta réponse !

    Non , ici le problème n'est pas Windev, mais comment intégrer cela dans ma requête SQL ?

    N'est-ce pas avec CAST ?

    Je regarde un peu partout sur le forum après d'éventuelle réponses, mais pour l'instant pas grand chose...

    C'est dans la requête de sélection qu'il faut préciser que ce sont des dates et non pas de chaines je présume...

    J'ai essayé ceci sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM CLIENTS WHERE( CAST(DATENAISS AS DATE) BETWEEN '18/01/1946' AND '20/01/2000')

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 795
    Points
    30 795
    Par défaut
    Si CAST reconnait le format 'DD/MM/YYYY' par défaut, en effet tu pourrais faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM clients 
    WHERE CAST(datenaiss AS DATE) BETWEEN CAST('18/01/1946' AS DATE) AND CAST('20/01/2000' AS DATE))
    Mais le plus souvent dans les SGBD, seul le format ANSI 'YYYY-MM-DD' est pris en charge par CAST.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    Il n'en veut pas et fait planter ma requête apparemment..

    Avez-vous une idée de ce que je peux faire dans ce cas ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Contrairement à ce qui est montré dans WDMap où les dates peuvent apparaître au forum JJ/MM/AAAA elle sont stockées au format AAAAMMJJ.
    Donc elles doivent être dans ce format pour effectuer la requête

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

Discussions similaires

  1. [AC-2010] Requête Mise à Jour sur champ Texte
    Par dadou5821 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/04/2015, 11h24
  2. [AC-2007] Problème requête filtres sur numérique et texte
    Par lio33 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/03/2011, 15h45
  3. [PDO] Requête SELECT sur plusieurs champs
    Par mathws dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/03/2009, 20h08
  4. problème pour requête SELECT sur plusieurs tables
    Par 3dagard dans le forum Requêtes
    Réponses: 15
    Dernier message: 18/08/2008, 00h34
  5. PB sur requête avec un champs texte
    Par nomade333 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/04/2008, 22h12

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