J'appelle mon code pour faire un refresh de la liste mais ça ne fonctionne pas

Résolu
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 27 janv. 2009 à 13:25
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 27 janv. 2009 à 13:47
Bonjour tout le monde,

Je remplis une listbox lors du chargement de mon formularie (formload) :

Private Sub Form_Load()

titre = 0
listGestionParametres.AddItem "Paramètres de type ""cause"""
sql = "SELECT parametre.id, parametre.nom, parametre.type_entrant FROM parametre ORDER BY parametre.type_entrant, parametre.nom ASC"
Set rsParametre = BDOuvrirTable(sql, False)
'double boucles WHILE (la première)
While Not rsParametre.EOF
    'je mets ce code pour vérifier si je suis dans un type_entrant différent de VRAI et si le titre est égal à zéro (qui veut dire que je n'ai pas encore mis le
    'texte "Paramètres de type "effet" afin de ne pas le mettre plus d'une fois.
    If ((Not rsParametre("type_entrant")) And (titre = 0)) Then
        listGestionParametres.AddItem "Paramètres de type ""effet"" "
        titre = titre + 1
    End If
    listGestionParametres.AddItem String(2, " ") & Trim(rsParametre("nom"))
    listGestionParametres.ItemData(listGestionParametres.NewIndex) = rsParametre("id")    sql "SELECT valeur_parametre.id, valeur_parametre.valeur FROM valeur_parametre WHERE ref_parametre " & rsParametre("id")
    Set rsValeur = BDOuvrirTable(sql, False)
    'la seoncde
    While Not rsValeur.EOF
        listGestionParametres.AddItem String(4, " ") & Trim(rsValeur("valeur"))
        listGestionParametres.ItemData(listGestionParametres.NewIndex) = rsValeur("id")
        rsValeur.MoveNext
    Wend
    rsValeur.Close
    rsParametre.MoveNext
    
Wend
rsParametre.Close
End Sub


je veux ensuite ajouter un nouveau paramètre, tout se passe bien sauf que j'appelle dans les dernières lignes Form Load afin de faire un refresh mais ça ne passe pas :

Private Sub mnuParAjouter_Click()
    'listIndex commence à zéro, ItemDate... commence à 1
    'si listindex est à -1 c'est qu'on a rien choisis, si les 4 premiers caractères sont égaux à des espaces, c'est que l'on est sur une valeur
    NouveauNomPar = ""
    NouvelExplicationPar = ""    If ((listGestionParametres.ListIndex -1) Or (Left(listGestionParametres.Text, 4) "    ")) Then
        Exit Sub
    Else
        NouveauNomPar = InputBox("Veuillez indiquer le nom du nouveau paramètre", "Ajout d'un nouveau paramètre")
        NouvelExplicationPar = InputBox("Veuillez indiquer la description du nouveau paramètre", "Ajout de la description du nouveau paramètre")
        sql = "SELECT * FROM parametre"
        Set rsParametre = BDOuvrirTable(sql, False)
        rsParametre.AddNew 'ajout d'un nouveau recordset
        rsParametre("Nom") = NouveauNomPar 'valeur de l'input
        rsParametre("explications") = NouvelExplicationPar 'valeur de l'input
        rsParametre.Update 'indispensable pour que l'ajout se fasse
        rsParametre.Close 'ferme le recordset
        Form_Load 'le form_load contient le code qui remplis la liste, je l'appelle donc afin de fair une mise à jour
    End If
    
End Sub


J'appelle donc Form_Load afin de faire un refresh (afin de relancer le code du form load) mais ça ne fonctionne pas.

Y a t-il une solution à ce problème svp ?

Merci d'avance.

beegees

2 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
27 janv. 2009 à 13:31
Bonjour,

Ce que je comprends pas c'est pourquoi tu mets ca dans form_load plutot que de créer une procedure ce qui serait beaucoup plus propre.
Ensuite tu pourrait l'appeller simplement par call nomprocedure... En gros en reprenant ton code :

Private Sub MaNouvelleProcedure()
titre = 0
listGestionParametres.AddItem "Paramètres de type ""cause"""
sql = "SELECT parametre.id, parametre.nom, parametre.type_entrant FROM parametre ORDER BY parametre.type_entrant, parametre.nom ASC"
Set rsParametre = BDOuvrirTable(sql, False)
'double boucles WHILE (la première)
While Not rsParametre.EOF
    'je mets ce code pour vérifier si je suis dans un type_entrant différent de VRAI et si le titre est égal à zéro (qui veut dire que je n'ai pas encore mis le
    'texte "Paramètres de type "effet" afin de ne pas le mettre plus d'une fois.
    If ((Not rsParametre("type_entrant")) And (titre = 0)) Then
        listGestionParametres.AddItem "Paramètres de type ""effet"" "
        titre = titre + 1
    End If
    listGestionParametres.AddItem String(2, " ") & Trim(rsParametre("nom"))
    listGestionParametres.ItemData(listGestionParametres.NewIndex) = rsParametre("id")    sql "SELECT valeur_parametre.id, valeur_parametre.valeur FROM valeur_parametre WHERE ref_parametre " & rsParametre("id")
    Set rsValeur = BDOuvrirTable(sql, False)
    'la seoncde
    While Not rsValeur.EOF
        listGestionParametres.AddItem String(4, " ") & Trim(rsValeur("valeur"))
        listGestionParametres.ItemData(listGestionParametres.NewIndex) = rsValeur("id")
        rsValeur.MoveNext
    Wend
    rsValeur.Close
    rsParametre.MoveNext
   
Wend
rsParametre.Close




End Sub


Private Sub Form_Load()
    Call MaNouvelleProcedure
End Sub


Private Sub mnuParAjouter_Click()
    'listIndex commence à zéro, ItemDate... commence à 1
    'si listindex est à -1 c'est qu'on a rien choisis, si les 4 premiers caractères sont égaux à des espaces, c'est que l'on est sur une valeur
    NouveauNomPar = ""
    NouvelExplicationPar = ""    If ((listGestionParametres.ListIndex -1) Or (Left(listGestionParametres.Text, 4) "    ")) Then
        Exit Sub
    Else
        NouveauNomPar = InputBox("Veuillez indiquer le nom du nouveau paramètre", "Ajout d'un nouveau paramètre")
        NouvelExplicationPar = InputBox("Veuillez indiquer la description du nouveau paramètre", "Ajout de la description du nouveau paramètre")
        sql = "SELECT * FROM parametre"
        Set rsParametre = BDOuvrirTable(sql, False)
        rsParametre.AddNew 'ajout d'un nouveau recordset
        rsParametre("Nom") = NouveauNomPar 'valeur de l'input
        rsParametre("explications") = NouvelExplicationPar 'valeur de l'input
        rsParametre.Update 'indispensable pour que l'ajout se fasse
        rsParametre.Close 'ferme le recordset
        Call MaNouvelleProcedure
    End If
   
End Sub

Je n'ai pas regardé le code...
Bon courage





S.L.B.
<hr />
3
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 1
27 janv. 2009 à 13:47
Salut lillith212,

Un super grand merci pour ta réponse qui vient de résoudre mon problème.

J'appliquerai cela tout le temps maintenant.

Merci encore.

beegeezzz
0
Rejoignez-nous