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

Dotnet Discussion :

Fonction LIKE en C#


Sujet :

Dotnet

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut Fonction LIKE en C#
    Salut à tous.
    j'utilise pour la première fois la fonction LIKE pour le développement d'une application C# avec BD Access.
    L’exécution de la requête directement dans le sql Access me donne le résultat souhaité. Quand j’exécute la requête dans Visual studio j'obtiens 0 comme résultat tandis la BD est bien renseignée. Alors je sollicite votre aide afin d'avance ma programmation.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    //Controle des caractères speciaux dans les libellés
     
     
                    string requete_nom = " select count(nom) as comptenom from virement where nom like '*e*' ";
                      OleDbDataReader lire_nom = cls.ouvrirRequète(requete_nom, maconnexion);
                      try
                      {
                          while (lire_nom.Read())
                          {
     
                              int compt = Convert.ToUInt16 (lire_nom["comptenom"]);
                              MessageBox.Show(Convert.ToString( compt));
                              if (compt > 0)
                              {
                                  string[] lineslib = {" " + compt + " " + " " + " Caractères speciaux presents dans le fichier " };
                                  System.IO.File.AppendAllLines(Application.StartupPath + "\\erreur_confrere.txt", lineslib);
                              }
                              else
                              {
                                  TXTSOURCEBIAO.Text = "";
                              }
     
     
                          }
     
                      }
                      catch (Exception ex)
                      {
                          MessageBox.Show(ex.Message);
                      }

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    vérifie que c'est bien la bonne base de données que tu interroge, que ça ne soit pas une copie faite quelque part, là ou il y a l'exe par exemple.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Salut sevyc64.
    Merci pour ta réponse.

    Ma base de données se trouve dans le chemin d'accès suivant et ce n'est pas une copie vu que je fais plusieurs requêtes avant celle contenant la fonction LIKE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Ma base de données se trouve dans le répertoire debug
    public static string chaine = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\bdtest.accdb";

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 228
    Points
    28 228
    Par défaut
    Ok, tu es en C# et ta base de données se trouve dans Application.StartupPath, elle est donc dans le même répertoire que l’exécutable.

    Ce qui signifie, en C#, lorsque le logiciel est exécuté depuis l'IDE, que c'est la base qui est dans le dossier TonProjet/Bin/Debug (ou TonProjet/Bin/Release, suivant le mode de compilation) qui est utilisée, et non pas celle (comme font beaucoup développeurs et se font avoir) qui est dans le dossier TonProjet, avec les sources du logiciel.

    Ce qui signifie aussi que, suivant le paramétrage des propriétés du fichier (s'il est intégré au projet, évidemment) que le fichier se trouvant dans le dossier d’exécution peut être systématiquement écrasé par celui qui se trouve dans el dossier des sources à chaque lancement de l’exécution depuis l'IDE, supprimant de fait les modifications faites aux données lors d'une exécution précédente.

  5. #5
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Points : 203
    Points
    203
    Billets dans le blog
    1
    Par défaut Requête access
    Essaye de changer la requete !

    remplace ......LIKE "*e*" par ....LIkE "%e%"


    Pour infos Le LIKE c est du SQL non pas du C# , je crois !

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Salut Lakhdr
    d'après mes recherches le sql d'access ne prend pas compte ....LIkE "%e%" mais plutôt ......LIKE "*e*".
    tu peux faire des tests et me revenir.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    sevyc64 merci pour ton éclaircissement mais j'ai pratiquement une dizaine de requêtes sur le même formulaire et c'est la seule requête contenant la fonction LIKE qui ne me donne pas le résultat souhaité.
    Après ton explication, les actions suivantes ont été menées :
    - Suppression de toutes les bases de données (MonProjet/Bin/Debug et MonProjet)
    - Suivi de la procédure d'ajout d'une nouvelle source de données mais en évitant la copie de la base dans MonProjet
    - Je recompile tout mon projet.

    Toutes les autres requêtes me donnent le résultat attendu sauf la requête de la fonction LIKE.

  8. #8
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,
    J'appuie la réponse de Lakhdr.

    Source :
    - http://www.developpez.net/forums/d46...l-like-access/
    - http://www.developpez.net/forums/d13...ss-inefficace/
    - http://www.developpez.net/forums/d11...buez/sql-like/

    Après je n'ai jamais travaillé avec Access donc à toi de voir.

    Bonne continuation

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour

    Pour l'utilisation de LIKE dans access cela dépend des 2 premiers points.
    En vb cela est forcé sur le 2ème par OLE DB, donc %
    • ANSI-89 Query Mode uses *
    • ANSI-92 Query Mode uses %
    OLE DB always uses ANSI-92 Query Mode.
    Voir aussi Caractères génériques et requête SQL post 7 à 13

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Salut Lakhdr
    je viens de faire des tests sur la base de données et dans le code source C#. je constate que LIKE "*e*" fonction uniquement sur access tandis que LIkE "%e%" fonction dans le code source.
    Ma requête me donne le résultat souhaité. Je marque donc le sujet résolu.
    Merci à chacun pour tous ces éclaircissement.

    Ma requête finale :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     //**********************************************************************************************************************
                    //Controle des caractères speciaux dans les libellés
     
                    string requete_nom = "select count(nom) as comptenom from virement where nom like '%É%'or nom like '%È%'or nom like '%Ê%'or nom like '%^%'or nom like '%¨%'or nom like '%ê%'or nom like '%Ô%'or nom like '%Ö%'or nom like '%ö%'or nom like '%é%'or nom like '%è%'or nom like '%Ë%'or nom like '%ë%'or nom like '%ù%'or nom like '%Ü%'or nom like '%ü%'or nom like '%û%'or nom like '%Û%'or nom like '%â%'or nom like '%Â%'or nom like '%à%'or nom like '%À%'or nom like '%ä%'or nom like '%Ä%'or nom like '%Ù%'or nom like '%Ï%'or nom like '%ï%'or nom like '%Î%'or nom like '%î%'";
                    OleDbDataReader lire_nom = cls.ouvrirRequète(requete_nom, maconnexion);
                      try
                      {
                          while (lire_nom.Read())
                          {
     
                              int compt = Convert.ToUInt16 (lire_nom["comptenom"]);
                              //MessageBox.Show(Convert.ToString( compt));
                              if (compt == 1)
                              {
                                  string[] lineslibnom1 = { " " + compt + " " + " Caractère special present dans les libellés des bénéficiaires  " };
                                  System.IO.File.AppendAllLines(Application.StartupPath + "\\erreur_confrere.txt", lineslibnom1);
                              }
                              else if (compt > 1)
                              {
                                  string[] lineslibnom2 = { " " + compt + " " + " Caractères speciaux presents dans les libellés " };
                                  System.IO.File.AppendAllLines(Application.StartupPath + "\\erreur_confrere.txt", lineslibnom2);
                              }
                              else
                              {
                                  TXTSOURCEBIAO.Text = "";
                              }
     
     
                          }
     
                      }
                      catch (Exception ex)
                      {
                          MessageBox.Show(ex.Message);
                      }

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

Discussions similaires

  1. la fonction like
    Par ouadie99 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/03/2008, 14h18
  2. AIDE SUR REQUETE SQL AVEC FONCTION LIKE
    Par everblue dans le forum Langage SQL
    Réponses: 0
    Dernier message: 16/03/2008, 19h56
  3. SQL fonction LIKE
    Par doogybreton dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 10/12/2007, 18h55
  4. Quid sur la fonction LIKE
    Par LiloBzH dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/09/2007, 19h35
  5. fonction LIKE Mysql
    Par franfr57 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/05/2006, 20h22

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