Besoin D'aide pour un SELECT en VB , svpp !

nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010 - 11 juin 2010 à 13:57
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010 - 14 juin 2010 à 14:19
Bonjour à tous,

J'aurai vraiment besoin d'aide , j'ai un projet à faire et sa fait 2jour que je suis bloquer dessus parce que je n'arrive pas à faire afficher les résultats d'un Select dans une listbox
J'ai essayer plein de chose differentes mais rien n'y fait .
Soit un message qui me dit que ma base n'est pas connecté , soit que l'argument prompt ne peut pas etre converti en type string ...

J'ai une base access 2000 , avec 4champs ( N°machine, NomMachine , AdresseIP, secteur ) et je travaille sur visual basic 2008

voila mon code :

1e méthode ( pr celle la l'erreur vient de la connexion de la base)

Dim LB_ListeMachines As New ListBox
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim bd As DBEngine


Try
bd = New DBEngine
db = bd.OpenDatabase("C:\...\Debug\BaseDeDonnées.mdb")
rs = db.OpenRecordset("SELECT NomMachine FROM Machines ")
While Not rs.EOF
LB_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

MyConnection.Close()


2e Methode ( erreur : prompt ne peut pas etre en string )


Dim MyConnection As New System.Data.OleDb.OleDbConnection()
Dim Affiche As OleDb.OleDbCommand = MyConnection.CreateCommand()
Dim LB_ListeMachines As New ListBox
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim bd As DBEngine

Try
MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\...\Debug\BaseDeDonnées.mdb"
MyConnection.Open()

Affiche.CommandText = "Select NomMachine from Machines"
MsgBox(Affiche.CommandText)
rs = Affiche.OpenRecordset(Affiche.CommandText)
Affiche.ExecuteNonQuery()
While Not rs.EOF
LB_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

MyConnection.Close()


Merci d'avance
A voir également:

23 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
11 juin 2010 à 14:16
Bonjour,

Un conseil (déjà dit mais bon) n'utilises plus DAO, qui est obsolète mais ADO...
As-tu téléchargé des sources du site pour t'en inspirer et voir ce qui bloquerait??

MsgBox(Affiche.CommandText) 'ici c'est du vb6 - le affiche.commandtext n'est peut-être du format adéquat.

As tu essayé comme je t'avais conseile de rajouter un recordcount avant pour vérifier que ta requête renvoie bien des enregistrements?

Essaye en enlevant le ".value"

L'expérience, c'est une connerie par jour, mais jamais la même..
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 14:24
et ques que je pourais mettre à la place du value ?

oué le message box je les enlever cetait juste pour voir ma requete
le recordcount je sais pas comment on dois faire, cest mon 1e prog en vb je le maitrise pas vraiment encore
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
11 juin 2010 à 14:32
Personnellement j'avais utilisé cette méthode il y a déjà quelques temps:

With monRecordset
If .RecordCount <> 0 Then
.MoveFirst
Do While Not .EOF 'puis parcourt les enregistrements jusqu'au dernier
'Ajout des différents choix de la listbox
CB_SESSION.AddItem .Fields("champ1")
.MoveNext
Loop
Else
MsgBox "Il n'y a pas d'enregistrement en cours", vbOKOnly
End If
.Close 'fermeture du recordset
End With



L'expérience, c'est une connerie par jour, mais jamais la même..
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 14:42
Un conseil (déjà dit mais bon) n'utilises plus DAO, qui est obsolète mais ADO...


Plus précisément ADO.Net en VB.Net

2e Methode ( erreur : prompt ne peut pas etre en string )


Dim MyConnection As New System.Data.OleDb.OleDbConnection()
Dim Affiche As OleDb.OleDbCommand = MyConnection.CreateCommand()
Dim LB_ListeMachines As New ListBox
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim bd As DBEngine

Try
MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\...\Debug\BaseDeDonnées.mdb"
MyConnection.Open()

Affiche.CommandText = "Select NomMachine from Machines"
MsgBox(Affiche.CommandText)
rs = Affiche.OpenRecordset(Affiche.CommandText)
Affiche.ExecuteNonQuery()
While Not rs.EOF
LB_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

MyConnection.Close()



Oulala ! Un mélage des deux....

Voila comment procéder :


        Dim oleDbConnex As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\...\Debug\BaseDeDonnées.mdb")
        Dim oleCmd As New OleDb.OleDbCommand("SELECT NomMachine FROM Machines", oleDbConnex)
        Try
            Dim TA As New OleDb.OleDbDataAdapter(oleCmd)
            Dim DT As New DataTable
            TA.Fill(DT)
            With MaListBox
                .ValueMember = "NomMachine"
                .DisplayMember = "NomMachine"
                .DataSource = DT
            End With
        Catch ex As Exception
            MessageBox.Show("Impossible d'établir la connexion à la base !! " & ex.Message)
        End Try


Bien entendu MaListBox représente une listbox que tu as dessiner sur ton formulaire à l'aide de la boite à outils de visual basic.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 14:49
j'ai utiliser le code que tu ma passer en modifiant bien sur le nom de la listebox mais rien n'y fait , ma listbox reste vide
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 14:53
est ce que je dois mettre du code dans la fonction de ma listbox ?
par exemple pour lui dire d'afficher le resultat ??
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 15:08
est ce que je dois mettre du code dans la fonction de ma listbox ?


Non, cela dépend, cette procédure déclanche le remplissage de ta listbox, donc tu la met ou tu veux, si tu veux qu'elle se remplisse au démarrage de ton formulaire, alors ce sera au load, lors d'un click sur un bouton, alors dans la procédure click de celui-ci...

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 15:17
oué ok bha pourtant la cest dans un bouton , et des que je clique bha j'ai rien qui se met dans ma listbox
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
11 juin 2010 à 15:23
Tu n'as pas de message d'erreur?
Bien connecté à la base, la table et le champ "nommachine" existent, avec des enregistrements?


L'expérience, c'est une connerie par jour, mais jamais la même..
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 15:26
non j'ai aucun message d'erreur , quand je clique sur le bouton ya rien qui se passe .
Oui ya des enregistrements et pour les nom de champ , de ma base , de ma listebox , j'ai verifier des 100aines de fois et cest bien les memes
je sais pu comment faire :/
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 15:52
Ne t'affole pas si cela ne fonctionne pas c'est qu'il y a forcement une erreur quelque part, la programmation n'est pas de la magie.

Si tu n'as pas de message d'erreur, alors c'est qu'il trouve bien ta table, se connecte bien à celle-ci, exécute bien la requête mais que le résultat retourné est 0 lignes...

Essaye de mettre des points d'arrêt en cliquant dans la marge de gauche de Visual basic, un point rouge apparaitra et stoppera le programme lors de son exécution avant que la ligne ne soit exécuté.

Ainsi en laissant le pointeur de ta souris sur les éléments de ton code, tu apercevras leurs valeurs, et tu pourras peut être mieux sérié la cause du problème.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 16:06
j'ai mi un point d'arret sur .valuemember="NomMachine"
et quand je regarde dans valeur
y me met ""
en gros cest quil trouve pas de valeur
pourtant dans ma base ya des enregistrements
jvoudrais bien te montrer mais jsais pas comment te mettre limage
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 16:12
Attention, si tu pointe sur une ligne qui est en jaune, forcément la valeur n'a pu être passé car cette ligne n'a pas encore été exécuté, il te faut donc toujours vérifier les lignes au dessus de celle en cours d'arrêt


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 16:14
Question :

"Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\...\Debug\BaseDeDonnées.mdb"


T'as laissé ta chaine de connexion telle-qu'elle ou tu l'avais raccourci pour la posté ici ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 16:19
ah je lavais raccourci pr la poster mais j'ai remis mon chemin d'acces dans mon prog
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
11 juin 2010 à 16:22
Bon je vais vous laisser je vais partir du boulot
jvous dit a lundi je pence que votre aide me sera encore la bienvenue lol
Bon weekend a vous
a+
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 16:24
Bon WE également =)


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
14 juin 2010 à 08:21
bonjour à tous ,
j'espere que vous avez passé un bon weekend .

Pour revenir à mon probleme , j'ai mis un point d'arret sur la 1e ligne pour voir si je me connecte bien .
mais sa me marque "nothing" quand je pointe dessus , donc j'imagine que la connexion n'est pas bonne.
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
14 juin 2010 à 08:42
c'est toujours moi Lol

j'ai finalement résolu mon probleme de connexion , il se met bien en relation avec ma base
Du coup j'ai mis un point d'arret sur la requete et sa me retourne rien ... :/
0
nico8001 Messages postés 92 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 30 juin 2010
14 juin 2010 à 08:48
quand je pointe sur la ligne de ma requete , sa me met "" ..
0
Rejoignez-nous