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

Requêtes et SQL. Discussion :

Le SQL « AjouteràWhere » et « Like » ne reconnaît pas la valeur numériq [AC-2000]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Le SQL « AjouteràWhere » et « Like » ne reconnaît pas la valeur numériq
    Bonjour,

    Dans une BD relative à la Formule 1, j’ai un formulaire qui consiste à rechercher des valeurs textes et numériques.

    Avec le bon vieux Acces 2.0, sans aucun problème, même sous Vista ( !) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MonSQL = "SELECT * FROM [Marques critères] WHERE"
    MonCritère = ""
     
    MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(91) & Chr(93) & Chr(39)).
    Hélas, après avoir converti 2.0 en 2000 et 2000 en 2007, en imputant ce même critère, cité ci-dessus, absolument rien n’est affiché et je reçois le message « Aucun enregistrement ne correspond aux critères introduits ».

    Avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
    les données s’affichent enfin, mais les valeurs numériques ne correspondent pas aux demandes.
    Je m’explique :

    En introduisant p.ex. « Alboreto » tout seul, tous ses résultats apparaissent. En imputant le chiffre 1
    comme critère de recherche dans sa place dans les courses (= victoire), je reçois toutes ses places de 1 à 19, au lieu de 1 tout court. 2 sur la grille de départ me fournissent ses positions de 20 à 29, au lieu de 2.

    Le point critique semble résider dans la reconnaissance des Chr(xx) dans la « Valeur du Champ ». Mais lesquels ?

    A l’avance, je vous remercie pour toute aide à ce sujet.

    P.S.

    Chr(39) = ‘ (apostrophe)
    Chr(42) = *
    Chr(91) = [
    Chr(93) = ]

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    La syntaxe utilisée, avec un Like et des apostrophes, suppose une interprétation type texte. Appliqué à un champ de type numérique, le moteur va traduire le numérique en texte avant de faire la comparaison.

    Ainsi pour MonNum like '2*', tu obtiendras effectivement 2 , 20, ...

    ==> ton code doit différencier le type de données ...

    Pour une recherche sur un numérique il faudra qq chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MonCritère = (MonCritère & NomChamp & " = " & ValeurChamp)
    PS: logiquement, cela devrait plutot être du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MonCritère = MonCritère & " AND " &  NomChamp & " = " & ValeurChamp

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci mout par la réponse.

    J'ai déjà ceci dans la sub:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If ValeurChamp <> "" Then
     If NbrArg > 0 Then
      MonCritère = MonCritère & " And "
     End If
    Par conséquent, où et comment faut-il à ton avis introduire le " = " (ou chr(61)??) dans ce qui suit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))

  4. #4
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Ok pour le AND....



    Pour le reste, il te faut adapter ton code pour qu'il mette la syntaxe adaptée au type du critère.

    Si NomChamp est de type texte, il te faudra qq chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonCritère = MonCritère & NomChamp & " Like '"  & ValeurChamp & "*'"
    Si nomchamp est numérique, il faudra
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MonCritère = MonCritère &  NomChamp & " = " & ValeurChamp
    ...

    Au fait, as-tu étudié les cours proposés en matière de recherche multicritères?
    http://access.developpez.com/cours/?...#formrecherche

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    J’ai trouvé moi-même la solution :

    La ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
    est à remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(39))
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonCritère = (MonCritère & NomChamp & " Like " & "'" & ValeurChamp & "'")
    et tout rentre dans l ‘ordre, càd que l’affichage des valeurs numériques et (ou) alphabétiques correspond exactement aux demandes. Le Chr(42) ou * a donc été le caractère empêchant le fonctionnement correct.

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

Discussions similaires

  1. SQL select like ne fonctionne pas sur une base csv
    Par MisterJeanP dans le forum MkFramework
    Réponses: 2
    Dernier message: 07/08/2014, 22h19
  2. [AC-2010] SQL - Like ne fonctionne pas!
    Par captainmakeu dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/01/2014, 21h01
  3. [VxiR2] BO ne reconnaît pas les dates SQL Server
    Par Seperpiou dans le forum Designer
    Réponses: 0
    Dernier message: 11/08/2011, 16h53
  4. SQL: LIKE, ne marche pas?
    Par seylistory dans le forum JDBC
    Réponses: 2
    Dernier message: 21/08/2010, 13h29

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