Comment afficher les resultats d'un SELECT dans une listbox en VB ??
nico8001
Messages postés92Date d'inscriptionmercredi 9 juin 2010StatutMembreDernière intervention30 juin 2010
-
9 juin 2010 à 10:33
cs_foxspown
Messages postés26Date d'inscriptionlundi 5 avril 2010StatutMembreDernière intervention18 juin 2010
-
10 juin 2010 à 21:35
Bonjour,
J'aurais vraiment besoin de votre aide.
C'est mon 1er prog en Vb sur visual basic 2008 donc je connais pas trop
en faite j'ai une requete select ( connecté avec une base de données access 2000 )
et je voudrais afficher les resultats de ma requete dans une listbox
dans ma base de données j'ai un champ IDmachine qui s'autoincremente , NomMachine , AdresseIP , Secteur
Voila mon code :
Private Sub B_Afficher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Afficher.Click
Dim ListeMachines As New ListBox
Dim Machines As OleDbDataReader = Nothing
Dim MyConnection As New System.Data.OleDb.OleDbConnection()
Dim Afficher As OleDb.OleDbCommand = MyConnection.CreateCommand()
cs_foxspown
Messages postés26Date d'inscriptionlundi 5 avril 2010StatutMembreDernière intervention18 juin 2010 9 juin 2010 à 10:50
Il faut créer un recordset, et fais une boucle While qui tournera tant qu'elle n'est pas arrivée à la fin de ton Recordset (sans oublier de la faire avancer d'enregistrement en enregistrement)
Et ensuite pour ajouter dans ta liste la syntaxe c'est
maListe.items.add("Ta valeur à ajouter)
(J'ai fait la même chose avec du vb.NET mais avec la bibliothèque DAO, donc je peux pas te donner la syntaxe exacte pour faire ton recordset...)
cs_foxspown
Messages postés26Date d'inscriptionlundi 5 avril 2010StatutMembreDernière intervention18 juin 2010 9 juin 2010 à 11:09
En fait un recordset c'est une sorte de liste qui va contenir le résultat de ta requete.
Ensuite, est-ce que tu as ajouté la bibliothèque DAO 3.6?
Sinon va dans Projet>Ajouter une référence / ensuite tu vas dans l'onglet "COM" et tu ajoute "Microsoft DAO 3.6 Object Library"
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_foxspown
Messages postés26Date d'inscriptionlundi 5 avril 2010StatutMembreDernière intervention18 juin 2010 9 juin 2010 à 11:20
Et le code que t'as trouvé m'a l'air bizarre...
Ce serait plus dans le genre
dim employe as string
Dim sql As String
Dim db As DataBase
Try
'Ouverture de la BDD
bd = New DBEngine
db = bd.OpenDatabase("C:/MaBDD.mdb")
'Remplissage de cmbEmploye
sql = "SELECT * FROM Employe;"
rsEmploye = db.OpenRecordset(sql)
While Not rsEmploye.EOF
employe = rsEmploye.Fields("nom").Value & " " & rsEmploye.Fields("prenom").Value
cmbEmploye.Items.Add(employe)
rsEmploye.MoveNext()
End While
Catch ex As Exception
MsgBox("Erreur!", MsgBoxStyle.Critical)
End Try
nico8001
Messages postés92Date d'inscriptionmercredi 9 juin 2010StatutMembreDernière intervention30 juin 2010 9 juin 2010 à 11:47
uai je viens de refaire la manip et sa me met tjr l'erreur
Tiens jvais te montrer mon code voir si tu vois l'erreur
sinn je la trouverai Lol
tu ma deja bien avancer ;) cher Collegue de codage ;)
voici :
Imports System.Data.OleDb
Imports DAO
Private Sub B_Afficher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Afficher.Click
Dim ListeMachines As New ListBox
Dim rs As DAO.Recordset
Try
MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=...\BaseDeDonnées.mdb"
MyConnection.Open() 'ouvre une connexion à la base de données
Affiche.CommandText = "Select NomMachine from Machines"
Affiche.ExecuteNonQuery()
rs = MyConnection.OpenRecordset(Affiche.CommandText) While Not rs.EOF
ListeMachines.Items.Add("NomMachine")
rs.MoveNext()
End While
Catch ex As Exception 'message d'exception si erreur
MessageBox.Show("Impossible d'établir la connexion à la base !!" & ex.Message)
End Try
cs_foxspown
Messages postés26Date d'inscriptionlundi 5 avril 2010StatutMembreDernière intervention18 juin 2010 9 juin 2010 à 12:02
Déjà, déclare ta BDD avec
Dim maBDD as DataBase
Ensuite dans ta boucle, pour ajouter un enregistrement de ton recordset ce n'est pas
ListeMachines.Items.Add("NomMachine")
mais
ListeMachines.Items.Add(rs.Fields("NomMachine").value)
le "rs.Fields("NomMachine").value" permet de sortir la valeur du champs entre ""
Et ton code amélioré donne :
Imports DAO
Private Sub B_Afficher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Afficher.Click
Dim ListeMachines As New ListBox
Dim rs As Recordset
Dim db As Database
Dim bd As DBEngine
Dim sql As String
Try
sql = "SELECT NomMachine FROM Machines"
bd = New DBEngine
db = bd.OpenDatabase("..\BaseDeDonnées.mdb")
rs = MyConnection.OpenRecordset(sql)
While Not rs.EOF
ListeMachines.Items.Add(rs.Fields("NomMachine").value)
rs.MoveNext()
End While
Catch ex As Exception 'message d'exception si erreur
MessageBox.Show("Impossible d'établir la connexion à la base !!" & ex.Message)
End Try
nico8001
Messages postés92Date d'inscriptionmercredi 9 juin 2010StatutMembreDernière intervention30 juin 2010 9 juin 2010 à 13:31
Oh snifff sa marche toujours pas
sa me met tjrs la meme erreur comme quoi openrecordset n'est pas un membre du systeme data oledb oledbconnection ... :(
nico8001
Messages postés92Date d'inscriptionmercredi 9 juin 2010StatutMembreDernière intervention30 juin 2010 9 juin 2010 à 13:38
Oh nan maintenant jai une nouvelle erreur qui a fait son apparition
sa me dit que pour la requete , l'argument 'prompt' ne peut pas etre converti en type 'string'