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 :

non respect de la casse requête sql. [WD14]


Sujet :

WinDev

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut non respect de la casse requête sql.
    Bonjour

    Soit la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
    	Fiche_clinique.Numfichclin AS Numfichclin,	
    	Fiche_clinique.date AS DATE,	
    	Fiche_clinique.Nom_patient AS Nom_patient,	
    	Fiche_clinique.prénom_patient AS prénom_patient,	
    	Fiche_clinique.agepat AS agepat,	
    	Fiche_clinique.profession AS profession,	
    	Fiche_clinique.adressepat AS adressepat,	
    	Fiche_clinique.numtelpat AS numtelpat,	
     
    FROM 	
    	Fiche_clinique
    WHERE 
    Fiche_clinique.Nom_patient LIKE {pRecherchePatient}%
    je sais que la requête est juste normalement, cependant elle ne retourne pas de résultat.

    le problème vient du fait que : Fiche_clinique.Nom_patient peut être en majuscule ou minuscule tandis que le paramètre pRecherchePatient est toujours en minuscule.

    exemple :
    Fiche_clinique.Nom_patient = DUPONT
    pRecherchePatient = dup

    là y'a pas de résultat.
    comment modifier la requêtes de tel sorte a ce que elle ne prend plus en considération la casse dans Fiche_clinique.Nom_patient et qu'il devienne minuscule lors de la condition Where.

    j'éspère que c'est un peu claire.

    Merci.

  2. #2
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Bonjour mon ami,
    Vu que votre Fiche_clinique.Nom_patient est toujours en majuscule,vous pouvez le comparer aussi qu'avec des paramètres gérant les majuscules.C'est pourquoi vous devez essayez ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE 
    Fiche_clinique.Nom_patient LIKE upper({pRecherchePatient}%)
    amicalement
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  3. #3
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    Il faut aussi voir dans l'analyse si le champs Fiche_clinique.Nom_patient est sensible à la casse...
    S'il l'est alors décocher 'sensible à la casse' est en principe, cela devrait rentrer dans l'ordre (d'extraction pour la requete).

    Maintenant, il serait préférable d'avoir une règle de programmation qui permette de dire ce qui doit etre en majuscule, minuscule, les deux (prénom commençant par une majuscule par exemple).

    A te lire, bon dev
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut
    bonsoir ,

    merci a vous deux de vos réponses.

    PaulNero : le champ Fiche_clinique.Nom_patient n'est pas toujours en majuscule justement, il peut être en minuscule, majuscule ou les deux.

    es-ce correcte si j'écris ça :
    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
     
    SELECT 
    	Fiche_clinique.Numfichclin AS Numfichclin,	
    	Fiche_clinique.date AS DATE,	
    	lower (Fiche_clinique.Nom_patient) AS Nom_patient,	
    	Fiche_clinique.prénom_patient AS prénom_patient,	
    	Fiche_clinique.agepat AS agepat,	
    	Fiche_clinique.profession AS profession,	
    	Fiche_clinique.adressepat AS adressepat,	
    	Fiche_clinique.numtelpat AS numtelpat,	
     
    FROM 	
    	Fiche_clinique
    WHERE 
    Nom_patient LIKE {pRecherchePatient}%
    ou plutot :
    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
     
    SELECT 
    	Fiche_clinique.Numfichclin AS Numfichclin,	
    	Fiche_clinique.date AS DATE,	
    	Fiche_clinique.Nom_patient AS Nom_patient,	
    	Fiche_clinique.prénom_patient AS prénom_patient,	
    	Fiche_clinique.agepat AS agepat,	
    	Fiche_clinique.profession AS profession,	
    	Fiche_clinique.adressepat AS adressepat,	
    	Fiche_clinique.numtelpat AS numtelpat,	
     
    FROM 	
    	Fiche_clinique
    WHERE 
    lower (Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}%
    EDM-TAHITI : je pense que cocher ou décocher la case "sensible a la casse" ne résoudrai pas mon problème dans la mesure ou j'ai une base de donnée que j'ai récupérer et qui contient déja plus de 400 d'enregistrements.

    Cordialement.

  5. #5
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,

    EDM-TAHITI : je pense que cocher ou décocher la case "sensible a la casse" ne résoudrai pas mon problème dans la mesure ou j'ai une base de donnée que j'ai récupérer et qui contient déja plus de 400 d'enregistrements.
    Si justement...

    WHERE
    lower (Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}%
    Il faudrait plutôt écrire

    WHERE
    Fiche_clinique.Nom_patient LIKE {pRecherchePatient}%
    car comme tu le soulignes dans tes propos, la casse peut être n"importe où. Si tu utilises le 'lower' et que dans 'pRecherchePatient', il y a une majuscule (sauf à gérer cela dans la saisie, on en revient alors à mes propos précédents), l'extraction ne se fera pas correctement...

    A te lire sur la suite et si ton problème est résolu... BRAVO...
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  6. #6
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Grace à ceci vos ennuis de casse seront contournés:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE 
    lower (Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}% or upper(Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}%
    voilà,

    Paulnero
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Citation Envoyé par PaulNero Voir le message
    Grace à ceci vos ennuis de casse seront contournés:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE 
    lower (Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}% or upper(Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}%
    voilà,

    Paulnero
    Faux

    Pour Nom_Patient = "dupont" et pRecherchePatient = "Dup" cela ne fonctionne pas. Dès que que vous aurez un mélange minuscules/majuscules dans le paramètre en fait.

  8. #8
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Faux

    Pour Nom_Patient = "dupont" et pRecherchePatient = "Dup" cela ne fonctionne pas. Dès que que vous aurez un mélange minuscules/majuscules dans le paramètre en fait.
    ok, dans le "FAUX" sur lequel je me trouve,je conseillerais à notre ami labib23dz de parametrer selon, la méthode que lui a proposé EDM-TAHITI.

    amicalement
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  9. #9
    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
    Bonjour,

    si ce que tu nous donnes comme la requête est bien ce que tu as écris alors il y a une erreur car il n'y a pas de virgule après numtelpat.

    Ensuite si tu dois comparer des chaines sans être sensible à la casse, il faut soit tout mettre en majuscules soit tout mettre en minuscule et ceci des 2 côtés de la comparaison et le mieux est de construire ta chaine dans le code pour la passer en paramètre ....

    Exemple (à tester et debugger car je ne sais pas si cela fonctionne avec HF) pour tout en minuscule :

    dans le code avant de passer le paramètre à la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pRecherchePatient = " ' " + MINUSCULE(chaineRechercheSaisie) + "%' "
    et dans la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ....... FROM Fiche_clinique
    WHERE lower (Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}
    à bientôt,

    Nicolas

  10. #10
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    Merci a tous pour vos réponse, je viens de résoudre mon problème, c'est tout simple au fait, je me suis compliquer la vie pour rien.

    j'ai mis un masque, tout en minuscule sur le paramètre pRecherchePatient, et du coup la condition de la requête devient tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE lower (Fiche_clinique.Nom_patient) LIKE {pRecherchePatient}%
    comme l'a dit Nicolas_Jeanneau.

    Merci encore a tous de votre temps et de votre intérêt.

    Salutation.

  11. #11
    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
    Bonjour,

    Je persiste pour la construction de la chaine dans le code, car tu risques d'avoir des surprises avec les noms composés ...

    ex :

    si ta zone de saisie de recherche est : de paris

    il faut que ta recherche soit la suivante :

    WHERE lower (Fiche_clinique.Nom_patient) LIKE 'de paris%'

    avec les cotes sinon il y aura une erreur (normalement) !

    à bientôt,

    Nicolas

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

Discussions similaires

  1. [LibreOffice][Texte] Non respect de la casse dans une macro
    Par Nerva dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 23/05/2013, 20h48
  2. Non Respect de la casse
    Par clavelski dans le forum SQL
    Réponses: 4
    Dernier message: 03/06/2010, 11h45
  3. variable non reconnue dans une requête sql
    Par sanatou dans le forum C++
    Réponses: 3
    Dernier message: 13/12/2006, 17h43
  4. requête SQL un peu casse tête
    Par hellbilly dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/12/2005, 10h03
  5. [NON RESOLU] Problème changement maitre détail - Requête SQL
    Par Leesox dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/08/2005, 09h49

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