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 :

Requête SQL avec variables


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut Requête SQL avec variables
    Bonjour,

    J'aimerais effectuer une requête en ayant pour condition des noms de variables. Est ce possible?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
            "E:\Mes documents\Ben\FS2004\Air Race\Chrono\bd_courses.mdb")
            Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
            Mycommand.CommandText = "SELECT COUNT(*) FROM param_course WHERE num_course=2"
            MyConnexion.Open()
            nb_porte = Mycommand.ExecuteScalar()
            MyConnexion.Close()
            Label8.Text = nb_porte
    Exemple, j'aimerais pouvoir modifier le num_course = 2 par num_course = ma_variable en déclarant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ma_variable As Integer = 2
    Merci d'avance pour l'aide que vous m'apporterez.
    Benoît

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Biensur que c'est possible

    Voici un code extrait d'ici si tu veux la source complete :
    Utilisation de Access
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Function Verifier_Doublon(ByVal Champs As String, ByVal Valeur As String) As Boolean
            RequeteSQL = "SELECT * FROM " & NomTable & " WHERE " & Champs & "='" & Valeur & "'"
            Dim Reponse As DataView = Execute() 'retourne la réponse
     
            If Reponse.Count > 0 Then 'si c'est plus grand que 0 alors il y a une reponse et donc c'est un doublon
                Return True
            Else 'sinon on peut l'ajouter
                Return False
            End If
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Tu peux utiliser les paramètres de commande, pour être plus propre ...

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
            "E:\Mes documents\Ben\FS2004\Air Race\Chrono\bd_courses.mdb")
            Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
            Mycommand.CommandText = "SELECT COUNT(*) FROM param_course WHERE num_course=@num_course"
     
            Mycommand.Parameters.Add("@num_course", ma_variable)
            MyConnexion.Open()
            nb_porte = Mycommand.ExecuteScalar()
            MyConnexion.Close()
            Label8.Text = nb_porte

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Merci à tous les deux!!!
    Keplan, ton code fonctionne sous VB2005 à ce détail près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql_nb_porte.Parameters.AddWithValue("@num_course", num_course_selected)
    Autre question, dans le cas ou je fais une requête avec 2 conditions, comment puis je les ajouter dans ce code? Est ce comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql_nb_porte.Parameters.AddWithValue("@num_course", num_course_selected;"@num_porte",num_porte_selected)
    Sinon Aspic, je vais étudier ton tuto parce que je dois réaliser ton un tas de lecture de valeurs dans cette base de données.

    Merci de votre aide!

  5. #5
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Ah désolé, je suis en VB 2003, mais tu as compris le principe.

    Sinon pour ta question, tu peux ajouter autant de paramètres que tu veux... (je pense que c'est la même chose en VB 2005)

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sql_nb_porte.Parameters.AddWithValue("@num_course", num_course_selected)
    sql_nb_porte.Parameters.AddWithValue("@num_porte", num_porte_selected)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    J'en profite pour vous demander votre avis :

    Dans ma base de données Access, j'ai une table "param_course" composée de 11 champs (num_course, num_porte, gate_latitude, gate_longitude, r_action, cap_consigne, cap_marge, etc) et de plusieurs enregistrements...

    J'ai écris un sub qui utilise des variables représentant chacun des champs de la table. Au début, mes variables doivent prendre les valeurs correspondant au premier enregistrement de ma table. Suite à un évènement, mes variables devront prendre les valeurs de l'enregistrement suivant... Etc.

    Que me conseillez vous comme technique... (Je précise que je suis totalement débutant) Je me demande si je ne devrais pas utiliser le DataSet, non?
    Je précise que ce n'est que de la lecture de données.

    Merci d'avance pour vos réponses...

  7. #7
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par BMT_Benoît
    Sinon Aspic, je vais étudier ton tuto parce que je dois réaliser ton un tas de lecture de valeurs dans cette base de données.
    Avec mon tutos, tu pourras créer ta base de données dynamiquement. Je m'explique :

    - Avec la classe C_BDD, il faut que ta base de donnée existe deja. Ensuite tu n'as qu'a regarder les fonctions dans cette classe et tu pourras ajouter (avec vérification des doublons), supprimer, mettre à jour tous tes elements sans créer une seule requete SQL.

    - Avec la classe C_BDD_New, rien n'est pré-recquis. Tu peux créer ta base, ajouter des tables, le nombre de champs que tu veux, supprimer une table...
    Enfin c'est bien expliqué sur le site

    Et en plus ces deux classes s'adaptent parfaitement à n'importe quelle base de données ACCESS quelque soit le nombre de champs !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Alors, vu que j'ai que de la lecture à faire et que la base de données existe déjà (pas de modifs à faire)... Je vais regarder C_BDD.
    Tu me déconseille le DataSet?

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

Discussions similaires

  1. Syntaxe pour requête SQL avec variables
    Par molibri dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2010, 14h50
  2. [MySQL] requête SQL avec variables non renseignées
    Par Boris56 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2010, 14h50
  3. Requête SQL avec variable externe
    Par Kesle dans le forum Bases de données
    Réponses: 15
    Dernier message: 15/05/2009, 18h14
  4. [MySQL] Requête SQL avec variable
    Par kate59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 14h12
  5. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41

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