PB ACTUALISATION LISTVIEW

Résolu
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 20 août 2008 à 17:38
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 21 août 2008 à 10:07
Bonjour,

Je rencontre un petit problème d'actualisation d'une LV.

Je rempli celle-ci depuis un Recordset. Le premier remplissage se passe bien.

Mais lorsque j'ajoute un enregistrement à ma base de données, l'actualisation ne se fait pas.

Je passe par les étapes suivantes :

LV.Items.Clear

LV.Items.Add     'Pour chaque enregistrement (le nouveau y compris j'ai vérifié en mode pas à pas)

LV.Refresh

Pour que ma LV s'actualise je dois fermer ma fenetre et la réouvrir.

Une idée ?

Merci d'avance

Bonne prog
++

8 réponses

bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 août 2008 à 10:07
Probème résolu.

Je ne sais toujours pas d'où cela pouvait venir, mais en organisant le code différemment cela fonctionne. 

Merci quand même pour avoir essayé.

Bonne prog
++
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
20 août 2008 à 18:08
Salut,
et ton recordset dans tout ça ?
Est-t-il réactualisé ?

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
20 août 2008 à 18:48
Salut,

Oui bien sûr, a chaque fois que je veux actualiser ma LV j'ouvre un nouveau recordset. J'ai vérifié en mode pas à pas et il contient bien mon nouveau enregistrment.

Bonne prog
++
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
20 août 2008 à 19:04
dans ce cas il faudrait qu' on jette un coup d' oeil sur le code
de la procedure de remplissage...

A+

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
20 août 2008 à 22:01
En fait je n'avais pas précisé mais mon RecordSet est d'abord chargé dans un tableau nommé oLevel (une structure perso). J'ai vérifié mon nouvel enregistrement y figure bien.



Voici le code :




With
LV




   .Items.Clear()






   For
i

As



Integer
= 0

To
oLevel.GetUpperBound(0)


      With
.Items.Add(oLevel(i).Name)         .SubItems.Add(oLevel(i).Index)








      End



With






   Next
i   .Refresh()


End



WithPour la source complète : cliquer ici

Le code se trouve dans la fenêtre 'frmList' procédure 'FillLV'

Pour y acceder lors de l'execution :
   - Première fenetre : choisir la base exemple
   - Deuxieme fenetre : Identifiant= 'ADMIN' et pas de mot de passe
   - Au menu général, cliquer sur le premier bouton et la frmList s'affiche

   - Un clic sur le bouton + d'une des listes pour ajouter un element (les 4 premières seulement) et c'est la que cela pose problème.

Merci encore de te pencher sur mon problème.

Bonne prog
++
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
20 août 2008 à 22:53
à première vue ça serait une question d' index.
GetUpperBound(0) renvoie la taille du tableau,
ce qui est, d' après ce que j' ai compris, l' équivalent du
recordcount. Or dans la boucle tu pars de 0.Et donc tu dois t' arrêter à GetUpperBound(0) -1.2tonnant qu' il n' y ait pas d' erreue à ce niveau.
Mais la question n' est pas là.
D' après ce que je sais des listview, les indices partent de 1.
Essaies donc:
Fori
As
Integer= 1
TooLevel.GetUpperBound(0)

De toute façon, ce n' est qu' une piste.Car en définitive,je n' ai aucune idée du commenr ça se passe en VB.NET.Je suis en VB6.
Et donc pas possible pour moi de voir la source.
Désolé donc si c' est pas ça.

Bonne continuation.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
20 août 2008 à 23:01
Autre piste:
Conserves ton code sans imbrication de With
With LV


   .Items.Clear()


   For i As Integer = 0 To oLevel.GetUpperBound(0)


      .Items.Add(oLevel(i).Name)
      .Items(i).SubItems.Add(oLevel(i).Index)


   Next i
   .Refresh()


End With





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 août 2008 à 08:29
Salut,

GetUpperBound est l'équivalent de Ubound(MonTableau) en VB6
Je dois également bien partir de 0 pour la variable i car c'est le premier index de mon tableau. Il est donc normal qu'il n'y ai pas d'erreur ici.

Sinon en .NET pas de problème avec l'imbrication des With, il gère cela très bien.

Non je pense que le problème est ailleurs mais je vois pas.

Merci quand même.

Bonne prog
++
0
Rejoignez-nous