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

C# Discussion :

Recherche de données dans une base Access [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Par défaut Recherche de données dans une base Access
    Bonjour (à nouveau)

    j'ai (encore) un problème avec ma base Access : j'ai une table avec 8000 lignes que j'affiche dans une DataGridView. J'ai différents champs (Quand, Quoi, Qui et Problèmes) et je réalise une recherche (filtrage) et ça marche plutot bien. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string query = "SELECT * FROM hotline WHERE Quand LIKE '%" + textBox1.Text + "%' AND Qui LIKE '%" + textBox2.Text + "%' AND Quoi LIKE '%" + textBox3.Text + "%' AND Pb LIKE '%" + textBox5.Text + "%' ;
    Du coup, ici je recherche seulement dans les colonnes Quand, Qui, Quoi, Pb et tout fonctionne parfaitement. Désormais que j'arrive à faire ça, je voudrais pouvoir faire la recherche dans des colonnes supplémentaire avec ici la colonne "solutions". Je l'ajoute à mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string query = "SELECT * FROM hotline WHERE Quand LIKE '%" + textBox1.Text + "%' AND Qui LIKE '%" + textBox2.Text + "%' AND Quoi LIKE '%" + textBox3.Text + "%' AND Pb LIKE '%" + textBox5.Text + "%' AND Solutions LIKE '%" + textBox4.Text + "%'";
    À ce moment là, j'obtiens une erreur :
    System.Data.OleDb.OleDbException*: 'Aucune valeur donnée pour un ou plusieurs des paramètres requis.'
    C'est comme ci il n'arrive à lire que les 4 colonnes mais pas toute les autres !

    Savez-vous la cause de ce problème ?

    Merci d'avance

    Asticoco

  2. #2
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Tu peux montrer les valeurs que tu rentres dans les champs ? Tu n'aurais pas une apostrophe quelque part ?

    Et sinon je te conseille de chercher sur google "injection sql".

  3. #3
    Membre averti Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Tu peux montrer les valeurs que tu rentres dans les champs ? Tu n'aurais pas une apostrophe quelque part ?

    Et sinon je te conseille de chercher sur google "injection sql".
    En fait, avant d'ajouter la colonne "solutions", tout marchait parfaitement que j'ajoute des apostophes lors de la saisie dans les textBox ou non. Voici quand même une capture de ma fenêtre : Nom : devenv_2020-02-13_23-07-09.png
Affichages : 490
Taille : 7,0 Ko

    D'ailleurs j'ai récupéré mon code me permettant d'écrire dans la base en Access afin de l'utiliser pour lire (celui écris dans mon message plutôt). Ça marchait mais je pense jusqu'à une certaine limite. Cette vidéo a un code qui me semble plus approprié mais lui il ne filtre qu'une colonne à la fois, ce qui m’intéresse c'est de pouvoir filtrer plusieurs colonnes à la fois :


    En tout cas, j'arrive mieux à écrire dans une base Access que la lire x)

    Bonne soirée et merci

  4. #4
    Membre averti Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Par défaut
    Au final j'ai réussi en suivant la vidéo et donc en recommançant tout ce que j'avais fait et j'obtient cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dvhotline.RowFilter = "Quand LIKE '%" + textBox1.Text + "%' AND Qui LIKE '%" + textBox2.Text + "%' AND Quoi LIKE '%" + textBox3.Text + "%' AND Pb LIKE '%" + textBox5.Text + "%' AND Solutions LIKE '%" + textBox4.Text + "%' AND Statut LIKE '%" + comboBox1.Text + "%'";
    Le code ci-dessus fonctionne correctement.

    Désormais, mon problème est que je souhaite filtrer une colonne qui comporte des cases cochées ou non cochées mais je ne sais pas comment faire. J'ai essayé avec une checkbox mais ça ne marche pas :

    J'AJOUTE CELA À MA LIGNE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND Axi LIKE '%"+checkbox1.Checked+"%'
    Dans ma base Access c'est interprété comme True et False.

    J'obtiens cette erreur :

    System.Data.EvaluateException*: 'Impossible d'effectuer une opération 'Like' sur System.Boolean et System.String.
    Merci d'avance

    Asticoco

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Par défaut
    puisqu'il s'agit d'un champ Vrai/Faux

  6. #6
    Membre averti Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Par défaut
    Citation Envoyé par Krantz Voir le message
    puisqu'il s'agit d'un champ Vrai/Faux
    En effet, ça marche bien mais le problème est qu'il me filtre uniquement les lignes ou Axi = True.

    Est-ce qu'il existe un moyen pour changer et mettre False (en utilisant une Checkbox ?)

    merci

    EDIT : Mon code fonctionne grâce à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND Collumnname = "+(checkbox1.checked ? "1" : "0")

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

Discussions similaires

  1. Gérer l'héritage des données dans une base Access
    Par Tofalu dans le forum Modélisation
    Réponses: 12
    Dernier message: 26/01/2011, 15h25
  2. Insertion des données dans une base access 2007
    Par guy_antoine_mav dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/11/2009, 21h34
  3. [ODBC] insérer des données dans une base access
    Par makfly2301 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/06/2008, 14h19
  4. [Debutant] mise à jour de donnée dans une base access
    Par brissou #55 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 25/12/2007, 21h28
  5. Recherche de Donnée dans une base
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 19/09/2006, 11h40

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