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

VB.NET Discussion :

Probleme résultats d'une requete avec like sur une base access.


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Probleme résultats d'une requete avec like sur une base access.
    Bonjour
    Je rencontre un probleme de resultat de requete (recherche sur une variable de type monetaire dans une base access).
    Si je fais une recherche sur "17,5" j'obtiens un resultat satisfaisant (des valeurs correspondant bien "17,50" par exemple...), en revanche si je cherche sur "17,50" mon recordset est vide !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If DTPDebut.Value <> Date.Today Or DTPFin.Value <> Date.Today Then
        Req = "select numoperation, dateope, libelle, montantope from operations where montantope like '%" & CDec(TextMontant.Text) & "%' " _
        & " and dateope between " & Format(CDate(DateDebut), gcSQLDATE) & " and " & Format(CDate(DateFin), gcSQLDATE) & " And numcompte=" & NumCompte & " "
    Else
        Req = "select numoperation, dateope, libelle, montantope from operations where montantope like '%" & CDec(TextMontant.Text) & "%' and numcompte=" & NumCompte & ""
    End If
    Si vous avez une idee je suis preneur.
    Merci
    Thierry

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 691
    Points : 996
    Points
    996
    Par défaut
    Bonjour,

    Déjà comparer des valeurs numériques avec un like qui sert à tester des valeurs alpha, c'est moyen.
    Mais en plus, je pense que tu devrais débugger ta valeur CDec(TextMontant.Text), histoire de comprendre ce qui se passe.

    Ensuite, il faudra que tu choisisses ce que tu veux faire, comparer des valeurs numériques ou comparer des valeurs alphanumériques.
    Et établir ta requête en fonction de çà.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 126
    Points : 1 636
    Points
    1 636
    Par défaut
    Et éventuellement, utiliser des requêtes paramétrées, histoire de sécurité.
    Et j'aurai "factorisé" la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Req = "select numoperation, dateope, libelle, montantope from operations where montantope like '%" & CDec(TextMontant.Text) & "%' and numcompte=" & NumCompte & ""
    If DTPDebut.Value <> Date.Today Or DTPFin.Value <> Date.Today Then
        Req = Req & " and dateope between " & Format(CDate(DateDebut), gcSQLDATE) & " and " & Format(CDate(DateFin), gcSQLDATE) 
    End If

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Suite
    Bonjour... Merci de vos réponses.... mais ca ne m'aide pas beaucoup....
    J'ai un peu avancé et il semble que le problème provienne d'access et non de ma requete (ou de VB). En faisant la meme requete dans access, j'ai egalement la meme chose. Access trouve les enregs de 17.50 avec un like "*17,5*" mais il ne trouve rien avec un like "*17,50*" Serait ce une subtilite du type monetaire dans access.... Bref je vais continuer à chercher

  5. #5
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 421
    Points : 2 180
    Points
    2 180
    Par défaut
    Bonsoir,
    Déjà il faut être sur que les valeurs soient au même format.
    Notes que Vu comme ça le like n'est pas utile.
    Format(montantope,'#0.00') like '%" & Format(TextMontant,"#0.00") & "%'

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Citation Envoyé par capricorne83 Voir le message
    Bonjour... Merci de vos réponses.... mais ca ne m'aide pas beaucoup....
    Et pourtant la réponse de m4k-Hurrican est on ne peut plus pertinente.
    On ne compare pas des choux et des carottes, c'est la base.
    Donc on applique pas une opération spécifique aux chaines sur un champs monétaire.

    Citation Envoyé par capricorne83 Voir le message
    J'ai un peu avancé et il semble que le problème provienne d'access et non de ma requete (ou de VB).
    En faisant la meme requete dans access, j'ai egalement la meme chose. Access trouve les enregs de 17.50 avec un like "*17,5*" mais il ne trouve rien avec un like "*17,50*"
    Le problème ne provient ni de l'un, ni de l'autre.
    On n'accuse pas un outil lorsqu'on ne sais pas l'utiliser correctement.

    Citation Envoyé par capricorne83 Voir le message
    Serait ce une subtilite du type monetaire dans access.... Bref je vais continuer à chercher
    Pas de subtilité dans Access, tu auras le même problème avec n'importe quel "SGBD".
    Encore une fois....On n'applique pas un LIKE sur un nombre (monétaire ou non).

    Fait un CAST de ton champs en chaine.
    Et là tu pourra y appliquer un LIKE

Discussions similaires

  1. Requête avec select sur 3 bases
    Par maloue dans le forum Développement
    Réponses: 1
    Dernier message: 20/07/2015, 12h07
  2. [10g] Requête avec like sur une liste
    Par stof dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2013, 12h17
  3. problème connexion à une base access
    Par meavy dans le forum JDBC
    Réponses: 1
    Dernier message: 14/01/2009, 11h01
  4. Requete avec LIKE sur du texte avec des slash
    Par mkaffel dans le forum Requêtes
    Réponses: 4
    Dernier message: 18/12/2007, 12h07
  5. [ODBC] Pb de requète avec jointure sur 2 bases
    Par Invité dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/12/2006, 16h46

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