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 de caractères génériques dans une requete avec parametres


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 76
    Points : 37
    Points
    37
    Par défaut Probleme de caractères génériques dans une requete avec parametres
    Bonsoir à tous

    J'ai un problème pour lequel je n'entrevois pas de solution.

    dans une requête via oledbConnexion, je voudrais extraire d'une table access tous les enregistrements dont le nom contient une valeur passée en paramètre. Cela fonctionne très bien pour les paramètres integer et boolean, mais pas pour les varchar avec caractère générique.

    voici le code

    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
    20
    21
    22
    Dim Od_Connexion_Od As OleDb.OleDbConnection = New OleDb.OleDbConnection(Cl_Constantes_Cl.V_Connexion_V)
     
            Dim V_paramString1_V As OleDb.OleDbParameter = Nothing
            Dim V_commande_V As OleDb.OleDbCommand = Nothing
     
            V_paramString1_V = New OleDb.OleDbParameter("@param1", OleDb.OleDbType.VarChar)
     
            V_Requete_V = "SELECT P.Ref, P.Nom, P.MF FROM(P) WHERE(((P.nom) like ""*@param1*"")) ORDER BY P.Nom;"
            'Ouverture de la connexion
            Try
                Od_Connexion_Od.Open()
                V_commande_V = New OleDb.OleDbCommand(V_Requete_V, Od_Connexion_Od)
     
                'Paramètre V_Param1_V  passé en arguments à la fonction
                V_paramString1_V.Value = V_Param1_V
     
                V_commande_V.Parameters.Add(V_paramString1_V)
     
                'Lecture des résultats
                Dim V_resultat_V As OleDb.OleDbDataReader = V_commande_V.ExecuteReader()
                Try
                    While (V_resultat_V.Read())
    Je n'ai pas de message d'erreur mais V_Resultat_V est vide. Par contre, cela fonctionne si l'on enlève les * et que l'on recherche un nom équivalent au paramètre et non pas contenant. J'ai essayé avec un seul guillemet, avec des ', en intégrant les * directement dans le paramètre.

    Merci à tous de votre aide, bonne soirée et à demain.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Bonjour,

    Est-ce que ton projet n'utilise pas une syntaxe compatible avec Microsoft SQL Server ?
    Dans ce cas là, il ne faut pas utiliser *, mais %.

    Source :
    http://office.microsoft.com/fr-fr/ac...881851036.aspx

    J'espère que cela résoudra ton problème.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 76
    Points : 37
    Points
    37
    Par défaut
    Bonjour Cougarg

    Je te remercie de ta réponse.

    Je ne connais pas du tout SQL Server. J'ignore donc si Oldb est compatible avec ou non.

    Je vais essayer de remplacer les * par des % comme tu le conseilles et voir ce que ça donne.

    Merci encore et bonne journée

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 76
    Points : 37
    Points
    37
    Par défaut
    Bonjour Cougarg

    Je viens d'essayer. C'est la même chose. Pas de message d'erreur, mais le résultat de la requête est vide.

    Bonne journée

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 76
    Points : 37
    Points
    37
    Par défaut
    re bonjour Cougarg

    En fait les % fonctionnent à condition de les intégrer directement dans le paramètre qui devient par exemple param1.value="%France%".

    Un grand merci pour ton aide

    Bon week-end

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour
    Tu devrais essayer avec de simple cote
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    V_Requete_V = "SELECT P.Ref, P.Nom, P.MF FROM(P) WHERE(((P.nom) like '%" & @param1 & "%')) ORDER BY P.Nom;"
    Cordialement
    Nasty

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

Discussions similaires

  1. Probleme dans une requete avec Fichier Excel
    Par FightinG712 dans le forum QlikView
    Réponses: 10
    Dernier message: 17/05/2013, 17h31
  2. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  3. [MySQL] Erreur dans une requête avec jointures
    Par bobic dans le forum Langage SQL
    Réponses: 17
    Dernier message: 03/08/2006, 13h04
  4. Somme dans une requete avec regroupement
    Par louroulou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/07/2006, 21h20
  5. Calculs dans une requete avec conditions multiples
    Par Sha1966 dans le forum Access
    Réponses: 3
    Dernier message: 13/01/2006, 15h18

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