Probleme de Listview en VB.NET
kirin54
-
kirin54 -
kirin54 -
Bonjour,
Je vous expose mon probleme,
Je veux créer une gestion d'agence de voyage en VB.NET (j'utilise Visual Basic 2005).
https://i27.servimg.com/u/f27/11/81/45/98/forum11.jpg
J'aimerai que quand je clique sur un index (2) le Label en bas de la page (1) se mete à jour en fonction de sur quoi j'ai cliquez. Le texte doit s'afficher en fonction de ce que j'ai rentrer dans une base de donnée access.
Je suis obligé de vous demandez ici car le prof ne sait absolument pas comment faire ^^. Voila merci d'avance.
Voila le code que j'ai taper jusqu'a maintenant :
Imports System.Data
Imports System.Data.OleDb
Public Class Form2
Private MyConnexion As OleDb.OleDbConnection
Private Sub FormCategorie_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyConnexion = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + _
"C:\Users\Noir\Desktop\APPDONNEE\voyages2004.mdb")
MyConnexion.Open()
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT CodeVoyage, Destination, Duree, Prix FROM tVoyages"
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
ListView1.Items.Clear()
Do While myReader.Read()
Dim ListView As New ListViewItem
ListView.Text = myReader.GetString(0)
ListView.SubItems.Add(myReader.GetString(1))
ListView.SubItems.Add(myReader.GetInt16(2))
ListView.SubItems.Add(myReader.GetValue(3))
ListView1.Items.Add(ListView)
Loop
myReader.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Try
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE "
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = ""
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
PS : Désolé pour la longeur.
Je vous expose mon probleme,
Je veux créer une gestion d'agence de voyage en VB.NET (j'utilise Visual Basic 2005).
https://i27.servimg.com/u/f27/11/81/45/98/forum11.jpg
J'aimerai que quand je clique sur un index (2) le Label en bas de la page (1) se mete à jour en fonction de sur quoi j'ai cliquez. Le texte doit s'afficher en fonction de ce que j'ai rentrer dans une base de donnée access.
Je suis obligé de vous demandez ici car le prof ne sait absolument pas comment faire ^^. Voila merci d'avance.
Voila le code que j'ai taper jusqu'a maintenant :
Imports System.Data
Imports System.Data.OleDb
Public Class Form2
Private MyConnexion As OleDb.OleDbConnection
Private Sub FormCategorie_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyConnexion = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + _
"C:\Users\Noir\Desktop\APPDONNEE\voyages2004.mdb")
MyConnexion.Open()
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT CodeVoyage, Destination, Duree, Prix FROM tVoyages"
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
ListView1.Items.Clear()
Do While myReader.Read()
Dim ListView As New ListViewItem
ListView.Text = myReader.GetString(0)
ListView.SubItems.Add(myReader.GetString(1))
ListView.SubItems.Add(myReader.GetInt16(2))
ListView.SubItems.Add(myReader.GetValue(3))
ListView1.Items.Add(ListView)
Loop
myReader.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Try
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE "
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = ""
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
PS : Désolé pour la longeur.
A voir également:
- Probleme de Listview en VB.NET
- Vb.net express - Télécharger - Langages
- Vb.net - Télécharger - Langages
- Provider en VB.NET ✓ - Forum Framework .NET
- Exception en vb.net - Forum Framework .NET
- VB.net ou c# ? - Forum Framework .NET
24 réponses
Déjà moi je ferais :
Label1.Text = ""
Do While myReader.Read()
Label1.Text &= myReader.GetString(0) & vbcrlf
Loop
Mais qu'est-ce qui ne marche pas au juste ?
Label1.Text = ""
Do While myReader.Read()
Label1.Text &= myReader.GetString(0) & vbcrlf
Loop
Mais qu'est-ce qui ne marche pas au juste ?
J'ai fait ce que tu me disait ya du mieux quand je clique sur un index ça affiche qqc.
Le problème c'est que ça affiche tout.
Merci pour la reponse rapide en tout cas .
Le problème c'est que ça affiche tout.
Merci pour la reponse rapide en tout cas .
Il faut savoir ce que tu veux afficher exactement...
Déjà dans ta requete "SELECT Description FROM tVoyages WHERE", il manque la fin...
Qu'elle est la structure de ta table ?
Déjà dans ta requete "SELECT Description FROM tVoyages WHERE", il manque la fin...
Qu'elle est la structure de ta table ?
Ma table est comme suis :
CodeVoyage (c'est un code sur 3 lettres)
Destination (le nom du pays)
NumCategori (un nombre entre 1 et 3)
Duree (un chiffre)
Destination (Texte de 20 mots)
Prix (sous la forme de : 1234,00€)
Moi je veux que quand je clique sur un index par exemple AUS toute la description contenue dans ma table (seuleument la description) s'affiche dans le label. Et que en cliquant ensuite sur un autre que seul la description qui correspond à l'index nouvellement selectionner s'affiche (à la place de l'autre).
Le WHERE qui traine c'est que quand j'ai posté ce post j'était en pleine réflexion.
Voila Merci et dsl pour le manque de précision.
CodeVoyage (c'est un code sur 3 lettres)
Destination (le nom du pays)
NumCategori (un nombre entre 1 et 3)
Duree (un chiffre)
Destination (Texte de 20 mots)
Prix (sous la forme de : 1234,00€)
Moi je veux que quand je clique sur un index par exemple AUS toute la description contenue dans ma table (seuleument la description) s'affiche dans le label. Et que en cliquant ensuite sur un autre que seul la description qui correspond à l'index nouvellement selectionner s'affiche (à la place de l'autre).
Le WHERE qui traine c'est que quand j'ai posté ce post j'était en pleine réflexion.
Voila Merci et dsl pour le manque de précision.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il faut déjà que tu rajoutes une clef primaire à ta table...
Du genre id, de type INT, en AUTO_INCREMENT. De manière à pouvoir identifier chaque enregistrement un à un par un nombre.
Du genre id, de type INT, en AUTO_INCREMENT. De manière à pouvoir identifier chaque enregistrement un à un par un nombre.
Bon, alors il faut trouver un moyen de l'ajouter dans ta listbox... Dans un nouveau subitem par exemple.
Essayes de faire ça dans un preimer temps.
Essayes de faire ça dans un preimer temps.
Donc maintenant ça donnerai quelque chose comme :
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Try
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE COD_VOYAGE='" & ListView1.selecteditems(0).subitem(3) & "'"
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
Il faut que tuy modifies la partie ne gras pour qu'elle pointe vers l'item contenant la valeur du COD_VOYAGE
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Try
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE COD_VOYAGE='" & ListView1.selecteditems(0).subitem(3) & "'"
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
Il faut que tuy modifies la partie ne gras pour qu'elle pointe vers l'item contenant la valeur du COD_VOYAGE
Erreur 1 L'opérateur '&' n'est pas défini pour les types 'String' et 'System.Windows.Forms.ListViewItem.ListViewSubItem'.
J'ai aussi essayer avec des + plus tot que des & mais rien à fare.
J'ai aussi essayer avec des + plus tot que des & mais rien à fare.
Maintenant j'ai : "InvalidArgument la valeur '0' n'est pas alide pour index"
"Type de donnée incompatible dans l'expressio du critère"
"Type de donnée incompatible dans l'expressio du critère"
Je voulais savoir aussi tous les instructions qui contienne "Item" comme subitem ou selecteditems , le fameux item ce serait pas les lignes.
Oubli pour les items ça fait que 3 jours que j'en fait alors je m'emele les pinceaus.
Il ne dise pas quelle ligne c'est. C'est quand je lique sur le code du voyage y m'ouvre une MsgBox avec c'est instructions dedans.
C'est tout.
Il ne dise pas quelle ligne c'est. C'est quand je lique sur le code du voyage y m'ouvre une MsgBox avec c'est instructions dedans.
C'est tout.
Ok, alors remplace par ça :
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE COD_VOYAGE='" & ListView1.selecteditems(0).subitem(3) & "'"
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
End Sub
Mais on est d'accord que ListView1.selecteditems(0).subitem(3) doit pointer vers la bonne colonne ! Il faut que ça pointe vers le subitem contenant le COD_VOYAGE
Je vais pas tarder à aller manger, au pire je reviens après
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE COD_VOYAGE='" & ListView1.selecteditems(0).subitem(3) & "'"
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
End Sub
Mais on est d'accord que ListView1.selecteditems(0).subitem(3) doit pointer vers la bonne colonne ! Il faut que ça pointe vers le subitem contenant le COD_VOYAGE
Je vais pas tarder à aller manger, au pire je reviens après
Bonne Appetit. Detoute façon je vais aussi y aller.
Mais un probleme subsiste à cette ligne :
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Il me dit : "Type de données incompatible dans l'expression du critère."
Mais un probleme subsiste à cette ligne :
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Il me dit : "Type de données incompatible dans l'expression du critère."
Essayes ça :
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE COD_VOYAGE='" & ListView1.selecteditems(0).subitem(3) & "'"
Msgbox Mycommand.CommandText
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
End Sub
Et dis moi ce qui s'affiche..; Verifie que la requete est correcte.
Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Dim Mycommand As OleDb.OleDbCommand = MyConnexion.CreateCommand()
Mycommand.CommandText = "SELECT Description FROM tVoyages WHERE COD_VOYAGE='" & ListView1.selecteditems(0).subitem(3) & "'"
Msgbox Mycommand.CommandText
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
Do While myReader.Read()
Label1.Text = myReader.GetString(0)
Loop
myReader.Close()
End Sub
Et dis moi ce qui s'affiche..; Verifie que la requete est correcte.