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

Windows Forms Discussion :

Inclure la valeur d'une combobox dans une requête


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut Inclure la valeur d'une combobox dans une requête
    Bonjour,

    Je cherche depuis un petit moment à remplacer par la valeur d'un combobox le nom d'un champ dans une requête servant à remplir un datagridview .

    Mon code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = dbgc.mdb;")
     
            da = New OleDbDataAdapter("SELECT TerminoID, DE, FR, EN, KUID FROM TblTermino Where DE Like '%" & TextBox1.Text & "%' ORDER BY TerminoID ", conn)
     
     
            Dim cb As New OleDbCommandBuilder(da)
            dt = New DataTable("Termino")
            conn.Open()
            da.Fill(dt)
            conn.Close()
            Dim bs As New BindingSource()
            dv = New DataView(dt)
            bs.DataSource = dv
            DataGridView1.DataSource = bs
    Je voudrais cependant pouvoir modifier le champ du "Where" à l'aide d'une combobox qui liste tous les champs (DE, EN, FR)
    Comment remplacer le nom du champ par la valeur de la combobox?

    Merci pour votre aide.

    Guillaume

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    au lieu de " WHERE EN like " textbox

    => " WHERE " & combobox.selecteditem.tostring & " like ..."

    attention à vérifier que le textbox et le combobox sont remplis avec ce qu'il faut

    de plus plutot que de la concaténation, il est préférable d'utiliser des dbparameters
    parce que si dans ton textbox l'utilisateur met un mot avec une apostrophe ca va planter via une concaténation
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Merci Pol63 !
    Ça marche, effectivement.
    Par contre, comme tu le dis, une erreur est levée quand je tape une apostrophe.
    C'est quoi exactement les dbparametres ?
    Je trouve rien dans la faq...

    Merci pour ton aide.

    Guillaume

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    y a une aide avec vb.net ... (touche F1, comme la plupart des autres logiciels du monde windows)

    http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    OK, c'est vrai, je vais essayer de voir ça comme un grand

    Merci pour ton aide.

  6. #6
    Expert éminent
    Avatar de Webman
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 232
    Points : 8 154
    Points
    8 154
    Par défaut
    Bonjour,

    Une petite remarque en passant, concaténer des requêtes SQL à la volée comme ca est le meilleur moyen de s'exposer aux attaques par SQL Injection, peut être ton appli ne le justifie pas; mais sache que cette façon de procéder est risquée. Pour t'en convaincre je te recommande cette petite vidéo de Pascal Belaud de MS France: http://www.microsoft.com/france/visi...6-e9852f0f828a

    Cordialement,
    Ronald
    Rédacteur .Net
    MVP C#
    Mes articles - CodeQuake (blog)
    Pas de question technique par MP, merci.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Points : 66
    Points
    66
    Par défaut
    Bonjour Webman,

    Merci pour cette info. C'est impressionnant ce qu'on peut arriver à faire quand on s'y connaît un peu ... et les autres pas trop

    Pour ma part, le risque est peu élevé, mon application ne me sert qu'à moi et n'est pas destinée à être mise en ligne.
    Par contre, j'ai suivi le conseil de Pol63 (dbparameters) et ça fonctionne bien maintenant avec l'apostrophe.

    Juste comme ça pour savoir : le fait d'utiliser les dbparameters suffit-il à réduire le risque dont il est question dans la vidéo ?

    Merci encore et bonne journée

    Guillaume

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par GCAccess Voir le message
    Juste comme ça pour savoir : le fait d'utiliser les dbparameters suffit-il à réduire le risque dont il est question dans la vidéo ?
    oui

    c'est pratique pour les dates aussi, tu mets une variable date dans le parameter et ca s'occupe de trouver le format qu'il faut dans la base
    parce qu'en passant une date en tant que string dans une base de données, il arrive parfois que ca inverse jour et mois ...

    après moi pour les nombres qui ne viennent pas de textbox, je concatène ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Comment faire une recherche dans une combobox et une sélection automatique
    Par VictoriusDan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2009, 16h17
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. Réponses: 2
    Dernier message: 30/10/2008, 13h28
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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