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 :

Ajouter enregistrement dans BD avec Combobox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Par défaut Ajouter enregistrement dans BD avec Combobox
    Bonjour,
    Je code une application avec VB 2010 Express.
    Je cherche depuis pas mal de temps la méthode pour ajouter un enregistrement dans une table (Access) lors du déroulement d'un Combobox.
    Je précise :
    - une table classique de Praticiens de santé contenant la clé, un champ Nom du Praticien et un champ Spécialité
    - un ComboBox affichant la liste de la table

    Je voudrais saisir dans la partie TextBox du ComboBox le nom d'un nouveau Praticien qui s'ajouterait à la table après message de confirmation.
    Je butte la-dessus car c'est ma première appli VB.
    Je remercie par avance celle ou celui qui pourra me rendre ce service.
    Cordialement.

  2. #2
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    Salut,

    Il y a 2 manières de faire :

    1 : tu lies ta base de donnée Access à ton projet VB. Visual studio va lui même créer des liens vers cette table et tu peux y faire ce que tu veux avec quelques lignes de codes via les "table adapters".
    2 : tu attaques ta base de donnée directement avec des requêtes SQL. C'est un peu plus lourd niveau code.

    Dans ton cas, j'utiliserai la 1ere méthode.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Par défaut
    Merci pour ta réponse mais je suis un peu novice pour mettre en place tes suggestions.
    Voici mon code dans lequel je pensais pouvoir ajouter l'insertion d'un nouvel élément qui s'ajouterait à la table :

    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
    37
    38
    39
    Imports System.Data.OleDb
     
    Public Class frmComboBox
        Dim cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Users\Utilisateur\Documents\VB2010Express\Projets\DepensesSante" & _
                                          "\WindowsApplication3\WindowsApplication3\DepensesSante.accdb")
        Dim dr As OleDbDataReader
     
        Private Sub frmComboBox_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Try
                cnx.Open()
                ComboBox1.Items.Clear()
                Dim cmd As New OleDbCommand
                cmd.CommandText = "SELECT * FROM Praticiens"
                cmd.Connection = cnx
                dr = cmd.ExecuteReader
                While dr.Read
                    ComboBox1.Items.Add(dr.GetString(1))
                End While
                cnx.Close()
                dr.Close()
            Catch ex As Exception
                MsgBox("L'erreur suivante a été rencontrée :" & ex.Message)
            End Try
        End Sub
     
        Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            ' ------------------------------------------------------------------------------------------------------------------
            ' je cherche à récupérer ici le texte saisie dans le combobox dans la partie textbox
            ' et à le traiter pour l'insérer dans la table Access Praticiens
            ' EST-CE POSSIBLE et comment ?
            ' --------------------------------------------------------------------------------------------------------------------
     
            ' récupère l'ID dans le combobox
            TextBox1.Text = ComboBox1.SelectedIndex.ToString()
            ' récupère le nom du Praticien dans le combobox
            TextBox2.Text = ComboBox1.Items(TextBox1.Text)
        End Sub
     
    End Class
    Cordialement

  4. #4
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    Ok, donc tu es partit dans l'option 2 : attaquer directement avec du SQL.

    Tu dois utiliser l'instruction INSERT pour créer un enregistrement dans ta base de donnée.
    Tu trouveras ici toutes les instructions SQL et des exemples :
    https://sql.sh/cours/insert-into

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 36
    Par défaut
    J'ai rajouté un bouton pour enregistrer la saisie faite dans le Combobox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            cnx.Open()
            Dim strSQL = "INSERT INTO Praticiens (PNom) VALUES ('" & ComboBox1.Text & "')"
            Dim cmd As New OleDbCommand(strSQL, cnx)
            cmd.ExecuteNonQuery()
            MsgBox("Ajout effectué.")
            cnx.Close()
            dr.Close()
        End Sub
    J'aurais souhaité que ce soit automatique avec : ComboBox1_SelectedIndexChanged, mais je n'ai pas trouvé.
    Existe-t-il une autre possibilité ?
    Cordialement.

  6. #6
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    C'est normal....
    Tu regardes l’événement "selectedindexchanged".

    Si j'ai bien compris.... ce n'est pas le cas.... tu tapes du texte directement dans le combobox... donc l'index de sélection ne change pas.
    Tu dois passer par un bouton dédié à l'action d'ajout.... je vois pas trop comment faire autrement.

    Autre chose, tu marques un message "ajout effectué".
    C'est une très bonne idée de dire à l'utilisateur que ça à bien fonctionné.... mais écrit comme ça, ça te dira que ça à fonctionné même si ça plante.

    Tu dois utiliser "Try Catch" pour ça.
    Renseignes-toi sur le net sur cette option mais en gros :

    Le code sous le "Try" s’exécute.
    Si il y a une erreur, le code du "Catch" va s’exécuter.
    Dans ce code tu peux mentionner l'erreur complète, l'écrire dans un log, ou débeuguer selon l'erreur.

    En plus de ça, l'application ne crashera pas.
    C'est un concept ultra important

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/10/2010, 09h00
  2. Probleme Ajout enregistrement dans un formulaire
    Par lawokgluot dans le forum IHM
    Réponses: 11
    Dernier message: 27/04/2007, 07h44
  3. Réponses: 1
    Dernier message: 24/07/2006, 18h28
  4. Ajout enregistrement dans un formulaire
    Par lawokgluot dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2006, 11h07
  5. Réponses: 4
    Dernier message: 28/04/2006, 23h21

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