Problème avec Visual Basic 2008 Express et MySQL

Résolu
Faufoll Messages postés 2 Date d'inscription dimanche 16 octobre 2011 Statut Membre Dernière intervention 16 octobre 2011 - 16 oct. 2011 à 12:08
Faufoll Messages postés 2 Date d'inscription dimanche 16 octobre 2011 Statut Membre Dernière intervention 16 octobre 2011 - 16 oct. 2011 à 14:38
J'ai trois soucis a vous présenter pour un programme qui a la base se veut être un outil de visualisation d'un parc info.

J'ai donc une base de données toute con avec Wamp et je souhaite faire trois choses :

1-Alimenter mes listbox avec le contenu d'une table via un select approprié.
2-Faire un update d'une table pour modifier un ligne de table (par ex : utilisateur)
3-Faire deux select dans deux tables différentes en récupérant l'index des deux lignes que j'ai sélectionné pour ensuite créer une ligne dans une troisième table. Ceci dans le but de faire une association poste/utilisateur.



1- Je sèche complètement sur comment faire en sorte de lire le resultat de mon select.

J'aimerais le stocker dans une variable et ensuite le lire ligne par ligne pour alimenter ma listbox.

Je pensais à :

Dim Mavariable as QuelqueChoseQuiPeutMarcher

nbLigne = ListesPostes.ListCount
compteur = 0

While compteur < nbLigne
Liste_Dates.RemoveItem (0)
compteur = compteur + 1
End While

Mavariable = ModuleBDDMysql.envoyerRequete ("SELECT `idutilisateur`, `Nom` FROM `utilisateur`)"

For ligne1 to lignemax

ListBox.Additem(ligne1)

Next


Mais j'ai beau essayé de faire avec un datareader, un recordset ou autre que j'ai trouvé sur le net, impossible de le faire marcher et je ne comprend pas toujours ce que les gens balance comme code, sans explications aucunes




2- J'ai essayé ça mais il me cale une erreur dans mon module qui pourtant marche très bien avec un delete ou insert :

Private Sub Envoyer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Envoyer.Click
ModuleBDDMysql.envoyerRequete("UPDATE `utilisateur` SET `Nom`= '" & SaisieNom.Text & "',`Prenom`= '" & SaisiePrenom.Text & "',`Email`= '" & SaisieMail.Text & "' WHERE `utilisateur`.`Nom` = '" & NomUtilAModif.Text & "'")
End Sub



3- Je voudrais donc mettre le résultat des deux select qui me renvoient chacun un index, que je voudrais stocker dans une table du nom "affecter" contenant deux colonnes : idPoste et idutilisateur

Private Sub Envoyer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Envoyer.Click
ModuleBDDMysql.envoyerRequete("INSERT INTO poste(`Nom`,`Marque`,`DisqueDur`,`Memoire`)VALUES('" & SaisieNomPoste.Text & "','" & SaisieMarque.Text & "','" & SaisieCapacite.Text & "','" & SaisieMemoire.Text & "')")

'ModuleBDDMysql.envoyerRequete("SELECT `idutilisateur` FROM `utilisateur` WHERE `Nom` LIKE 'NOM' AND `Prenom` LIKE 'Cyril'")
'ModuleBDDMysql.envoyerRequete("SELECT `Idposte` FROM `poste` WHERE `Nom` LIKE 'test'")
'ModuleBDDMysql.envoyerRequete("INSERT into affecter (idPoste, idUtilisateur) values (le resultat de mes deux select)
End Sub




Pour tout les codes j'ai utilisé un module afin d'automatiser tout ça. La connexion se fait au démarrage du programme et la déconnexion en quittant.

Imports MySql.Data.MySqlClient

Module ModuleBDDMysql

Dim connexion As MySqlConnection
Dim commande As MySqlCommand

Public Sub connecter()
connexion = New MySqlConnection
connexion.ConnectionString = "Server=localhost; Database=evolution; Uid=root; Pwd=;"
connexion.Open()
End Sub

Public Sub envoyerRequete(ByVal commando As String)
commande = connexion.CreateCommand
commande.CommandText = commando
commande.CommandTimeout = 10
commande.ExecuteNonQuery()
End Sub

Public Sub deconnecter()
connexion.Close()
MsgBox("Connection BDD ended")
End Sub

End Module

1 réponse

Faufoll Messages postés 2 Date d'inscription dimanche 16 octobre 2011 Statut Membre Dernière intervention 16 octobre 2011
16 oct. 2011 à 14:38
Je répond a mon propre message, pour dire que j'ai résolu un de mes soucis et j'ai juste un problème avec le premier.

Mon code est comme ceci pour le 1 :
Private Sub GestionUtil_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim requete As String
Dim rs As Recordset
Dim base As Database
Dim valeur As String

requete = "select * from utilisateur"
rs = base.OpenRecordset(requete, dbOpenDynaset)
If rs.EOF = False Then
rs.MoveFirst()
While rs.EOF = False
valeur = rs("idutilisateur") + rs("Nom") + rs("Prenom")
ListesUtilisateurs.Items.Add(valeur)
rs.MoveNext()
End While
ListesUtilisateurs.SelectedIndex = 0
End If
End Sub




Sauf qu'il me sort deux erreurs :
L'opérateur '+' n'est pas défini pour les types 'DAO.field' et 'DAO.field'
Le nom 'dbOpenDynaset' n'est pas déclaré



Pour mon problème 2 en fait je démarrais mon programme directement depuis la form qui m’intéressais sauf que ma base s'ouvrant avec la form de démarrage normale, ça risquait pas de marcher :sick: J'ai bien suxxé sur ce coup.


Toujours pas d'idée pour le problème 3
3
Rejoignez-nous