OVH Cloud OVH Cloud

ListBox liée sous VB 2005

1 réponse
Avatar
Claude
Comment établir le lien entre une listbox qui affichera les données d'une
première table et permettra à une seconde de stocker un autre champ que celui
affiché par la listeBox.

Par exemple, dans un écran de saisie de commandes (Table Commandes), une
listbox permet de lister les noms des articles (table Articles) mais transmet
simplement le code de ces articles à la table Commandes ?

Merci de votre aide...

1 réponse

Avatar
Cyril P.
Il faut imaginer que tu as stockés tes articles dans une classe créée à cet
effet. Dans notre cas par exemple on écrirait une classe de ce style :

Public Class article
Private m_name As String
Public m_code As String

Public Property name() As String
Get
Return m_name
End Get
Set(ByVal value As String)
m_name = value
End Set
End Property

Public Property code() As String
Get
Return m_code
End Get
Set(ByVal value As String)
m_code = value
End Set
End Property

' La listbox ce sert de cette fonction pour savoir quoi afficher
Public Overrides Function ToString() As String
Return m_name
End Function

' a coder : reste du fonctionnement de ta classe
' ...
End Class

Quand tu ajoutes un item a ta liste, tu ajoutes directement un objet de type
article, et lui affichera le nom de l'article en se servant de "tostring" que
tu as surchargée.

Dim a As article = New article
a.name = "PC de poche"
a.code = "PCP"
Me.ListBox1.Items.Add(a)

Enfin, lorsque tu souhaites utiliser le code pour retrouver cet article en
base de donnée, tu le retrouves en castant l'item dans son vrai type, c'est a
dire article, et en accedant a la bonne propriété

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
MsgBox(CType(ListBox1.SelectedItem, article).code)
End Sub

Pour bien faire, il faudrait quand meme soit verifier que cet item est bien
du bon type soit gerer l'eventuelle exception sur un bad casting, car le code
serait beaucoup plus safe, mais dans l'idée, c'est de cette manière que tu
obtiens ce que tu souhaites faire aujourd'hui.

Cordialement,
--
Cyril PINEAU
.Net Technical analyst
CNPPF France


"Claude" wrote:


Comment établir le lien entre une listbox qui affichera les données d'une
première table et permettra à une seconde de stocker un autre champ que celui
affiché par la listeBox.

Par exemple, dans un écran de saisie de commandes (Table Commandes), une
listbox permet de lister les noms des articles (table Articles) mais transmet
simplement le code de ces articles à la table Commandes ?

Merci de votre aide...