Bonjour,
J'ai une question en visual basic express 2005.
Je veux accéder à une base de donnée qui est sous accès (qui gère des patient: nom, prenom...), j'ai une ListBox qui affiche tous les noms de la base de données et à coté j'ai un ensemble de TextBox qui affiche les caractéristique.
Quand j'appuie sur le bouton ButtonAfficherPatient les noms s'affichent dans la ListBox et 1er nom est sélectionné et dans les TextBox je vois bien les caractéristuque s'afficher, par contre quand je clique sur les autres nom, il se passe rien, j'ai toujours les caractéristiques du premier patient dans les TextBox.
Comment je dois faire s'il vous?????
Je vous envoie le code ça peut surement aider
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class Patient
'Déclarer la connexion
Private ObjetConnection As OleDbConnection
' Déclaration l'Objet Commande
Private ObjetCommand As OleDbCommand
' Déclaration Objet DataAdapter
Private ObjetDataAdapter As OleDbDataAdapter
' Déclaration Objet DataSet
Private ObjetDataSet As New DataSet
'String contenant la 'Requête SQL'
Private strSql As String
' Déclaration Objet DataTable
Private ObjetDataTable As DataTable
' Déclaration Objet DataRow (ligne)
Private ObjetDataRow As DataRow
'Paramêtres de connexion à la DB
Private strConn As String
'Numéro de la ligne en cours
Private RowNumber As Integer 'Numéro de l'enregistrement courant
'Pour recompiler les données modifiées avant de les remettre dans le
'"DataAdapter"
Private ObjetCommandBuilder As OleDbCommandBuilder
'Identifiant du vin courant. C'est à dire le vin affiché et utilisé pour l'ajout des bouteilles
Private PatientEnCoursDUtilisation As String = Nothing
'Permet d'instancier un objet patient et d'utiliser ses propriétés:
Private m_id_pat As Integer
Private m_ref_civilite As Integer
Private m_nom As String
Private m_prenom As String
Private m_date_naissance As Date
Private m_adresse As String
Private m_code_postal As Integer
Private m_ville As String
Private m_ref_pays As Integer
Private m_tel_fixe As String
Private m_tel_mobile As String
Private m_email As String
Private m_sexe As String
''' <summary>
''' Acces au table Medecin et Patient
''' </summary>
Private Sub Patient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO : cette ligne de code charge les données dans la table 'MedecinBDDataSet.Patient'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.PatientTableAdapter.Fill(Me.MedecinBDDataSet.Patient)
'TODO : cette ligne de code charge les données dans la table 'MedecinBDDataSet.Medecin'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.MedecinTableAdapter.Fill(Me.MedecinBDDataSet.Medecin)
End Sub
''' <summary>
''' Affichage caractéristique d'un patient
''' </summary>
Private Sub ButtonAffichagerPatient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonAffichagerPatient.Click
'Initialisation de la chaîne de paramètres pour la connexion
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= c:\Documents and Settings\admin.LPD09\Bureau\Aurelie.Wynant\medecinBD.mdb;"
'Initialisation de la chaîne contenant l'instruction SQL
strSql = "SELECT * FROM Patient"
'Instanciation d'un Objet Connexion
ObjetConnection = New OleDbConnection
'Donner à la propriété ConnectionString les paramètres de connexion
ObjetConnection.ConnectionString = strConn
'Ouvrir la connexion
ObjetConnection.Open()
'Instancier un objet Commande
ObjetCommand = New OleDbCommand(strSql)
'Instancier un objet Adapter
ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
'initialiser l'objet Command
ObjetCommand.Connection() = ObjetConnection
'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
ObjetDataAdapter.Fill(ObjetDataSet, "Patient")
'Mettre dans un Objet DataTable une table du DataSet
ObjetDataTable = ObjetDataSet.Tables("Patient")
'Indiquer au ListBox d'afficher la table "fichepatient" (indiquer la source)
ListBoxAfficherPatient.DataSource = ObjetDataSet.Tables("Patient")
'Indiquer quelle colonne afficher
ListBoxAfficherPatient.DisplayMember = "nom"
If RowNumber < 0 Then Exit Sub
'Lors de l'ouverture de la BD, s'il n'y a aucun enregistrement
If RowNumber > ObjetDataTable.Rows.Count - 1 Then Exit Sub
'ObjetTable.Rows(Numéro de lignes).Item( Nom de colonne) donne le contenu d'un champ dans une ligne donnée
Id_patTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Id_pat").ToString
Ref_civiliteComboBox.Text = ObjetDataTable.Rows(RowNumber).Item("Ref_civilite").ToString
NomTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Nom").ToString
PrenomTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Prenom").ToString
Date_naissanceDateTimePicker.Text = ObjetDataTable.Rows(RowNumber).Item("Date_naissance").ToString
AdresseTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Adresse").ToString
Code_postalTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Code_postal").ToString
VilleTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Ville").ToString
Ref_paysTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Ref_pays").ToString
Tel_fixeTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Tel_fixe").ToString
Tel_mobileTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Tel_mobile").ToString
EmailTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Email").ToString
SexeComboBox.Text = ObjetDataTable.Rows(RowNumber).Item("Sexe").ToString
'Item peut avoir en paramètre le nom de la colonne ou sont index
End Sub
Private Sub ListBoxAfficherPatient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxAfficherPatient.Click
If RowNumber < 0 Then Exit Sub
'Lors de l'ouverture de la BD, s'il n'y a aucun enregistrement
If RowNumber > ObjetDataTable.Rows.Count - 1 Then Exit Sub
'ObjetTable.Rows(Numéro de lignes).Item( Nom de colonne) donne le contenu d'un champ dans une ligne donnée
Id_patTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Id_pat").ToString
Ref_civiliteComboBox.Text = ObjetDataTable.Rows(RowNumber).Item("Ref_civilite").ToString
NomTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Nom").ToString
PrenomTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Prenom").ToString
Date_naissanceDateTimePicker.Text = ObjetDataTable.Rows(RowNumber).Item("Date_naissance").ToString
AdresseTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Adresse").ToString
Code_postalTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Code_postal").ToString
VilleTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Ville").ToString
Ref_paysTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Ref_pays").ToString
Tel_fixeTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Tel_fixe").ToString
Tel_mobileTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Tel_mobile").ToString
EmailTextBox.Text = ObjetDataTable.Rows(RowNumber).Item("Email").ToString
SexeComboBox.Text = ObjetDataTable.Rows(RowNumber).Item("Sexe").ToString
'Item peut avoir en paramètre le nom de la colonne ou sont index
End Sub
''' <summary>
''' Modification d'un patient
''' </summary>
Private Sub ButtonModifierPatient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonModifierPatient.Click
'Modifier un enregistrement:
' Extraire l'enregistrement courant
ObjetDataRow = ObjetDataSet.Tables("Patient").Rows(RowNumber)
'Modifier les valeurs des champs en récupérant le contenu des TextBox
ObjetDataRow("id_pat") = Id_patTextBox.Text
ObjetDataRow("ref_civilite") = Ref_civiliteComboBox.Text
ObjetDataRow("nom") = NomTextBox.Text
ObjetDataRow("prenom") = PrenomTextBox.Text
ObjetDataRow("date_naissance") = Date_naissanceDateTimePicker.Text
ObjetDataRow("adresse") = AdresseTextBox.Text
ObjetDataRow("code_postal") = Code_postalTextBox.Text
ObjetDataRow("ville") = VilleTextBox.Text
ObjetDataRow("Ref_pays") = Ref_paysTextBox.Text
ObjetDataRow("tel_fixe") = Tel_fixeTextBox.Text
ObjetDataRow("tel_mobile") = Tel_mobileTextBox.Text
ObjetDataRow("email") = EmailTextBox.Text
ObjetDataRow("sexe") = SexeComboBox.Text
'Pour modifier les valeurs changées dans le DataAdapter
ObjetCommandBuilder = New OleDbCommandBuilder(ObjetDataAdapter)
End Sub
Private Sub ButtonValiderPatient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonValiderPatient.Click
'Mise à jour
ObjetDataAdapter.Update(ObjetDataSet, "Patient")
'On vide le DataSet et on le 'recharge' de nouveau.
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet, "Patient")
ObjetDataTable = ObjetDataSet.Tables("Patient")
End Sub
End Class
De plus je quand j'appuie plusieurs fois sur le bouton afficherpatient, il m'affiche plusieurs fois les patients les uns a la suite des autres, je voudrais effacer ma listBox mais Clear() ne marche pas? Comment je dois faire?
Désolée pour toutes ces questions, mais je suis en stage et je me suis jamais servi de visual basic
Pour ta 1ere question, ne serait-ce pas l'evennement ListBoxAfficherPatient_SelectedIndexChanged(...) qu'il te faut coder pour mettre à jour les informations au lieu de ListBoxAfficherPatient_Click(...) ?
J'ai réussi a afficher les caractéristiques pour les différents patients.
Mais j'arrive toujours pas a afficher ma listBox
J'ai essayer ça ListBoxAfficherPatient.Items.Clear() mais ça ne marche pas, ou je le met pas au bon endroit.