beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 2017
-
28 janv. 2009 à 12:00
beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 2017
-
28 janv. 2009 à 14:14
Bonjour tout le monde,
Je passe un objet (combobox) à une fonction :
Private Sub comboTypeSupport_Click() sql "SELECT id, nom, max_boules FROM taille_support WHERE ref_support IN (SELECT id from support WHERE id " & comboTypeSupport.ItemData(comboTypeSupport.ListIndex) & ")"
BDRemplirListe sql, comboTailleSupport
End Sub
Voici la fonction :
Public Sub BDRemplirListe(ByVal sql As String, ByRef Liste As Control)
Dim rsTable As Recordset
If (TypeOf Liste Is ListBox) Or (TypeOf Liste Is ComboBox) Then
Set rsTable = BD.OpenRecordset(sql, dbOpenSnapshot)
Liste.Clear
While Not rsTable.EOF
Liste.AddItem rsTable(1) & " (" & rsTable(2) & " boules)"
Liste.ItemData(Liste.NewIndex) = rsTable(0)
rsTable.MoveNext
Wend
End If
End Sub
Je voudrais savoir comment je peux connaîre le nom de la liste (name) passée en paramètre ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 janv. 2009 à 14:04
pas d'accord avec jmf0
très bonne habitude que de teste le TypeOf
en effet, tu demande un Control, ca évite tout accident.
(ajoutes un Else avec une injureBox qui va te permettre de corriger tout manquement)
pour ta question première, fais simplement Liste.Name pour connaitre le nom du controle, tout simplement.
cependant, l'ajout de ton boolean est une bien meilleure solution. Ca évite de lier ta fonction a un cas spécifique, elle est plus réutilisable, mieux structurée.
beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 20171 28 janv. 2009 à 13:05
Bonjour,
Merci pour ta réponse.
Bon, j'ai trouvé un moyen de contourner en mettant un paramètre optionnel :
Public Sub BDRemplirListe(ByVal sql As String, ByRef Liste As Control, Optional plus As Boolean = False)
Dim rsTable As Recordset
If (TypeOf Liste Is ListBox) Or (TypeOf Liste Is ComboBox) Then
Set rsTable = BD.OpenRecordset(sql, dbOpenSnapshot)
Liste.Clear
While Not rsTable.EOF
If plus = True Then
Liste.AddItem rsTable(1) & " (" & rsTable(2) & " boules)"
Liste.ItemData(Liste.NewIndex) = rsTable(0)
rsTable.MoveNext
Else
Liste.AddItem rsTable(1)
Liste.ItemData(Liste.NewIndex) = rsTable(0)
rsTable.MoveNext
End If
Wend
End If
End Sub