PB ACTUALISATION LISTVIEW [Résolu]

Messages postés
1424
Date d'inscription
mercredi 6 août 2003
Dernière intervention
29 juin 2011
- 20 août 2008 à 17:38 - Dernière réponse :
Messages postés
1424
Date d'inscription
mercredi 6 août 2003
Dernière intervention
29 juin 2011
- 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
++
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1424
Date d'inscription
mercredi 6 août 2003
Dernière intervention
29 juin 2011
- 21 août 2008 à 10:07
3
Merci
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
++

Merci bouv 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de bouv
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 20 août 2008 à 18:08
0
Merci
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.
Commenter la réponse de LIBRE_MAX
Messages postés
1424
Date d'inscription
mercredi 6 août 2003
Dernière intervention
29 juin 2011
- 20 août 2008 à 18:48
0
Merci
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
++
Commenter la réponse de bouv
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 20 août 2008 à 19:04
0
Merci
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.
Commenter la réponse de LIBRE_MAX
Messages postés
1424
Date d'inscription
mercredi 6 août 2003
Dernière intervention
29 juin 2011
- 20 août 2008 à 22:01
0
Merci
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
++
Commenter la réponse de bouv
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 20 août 2008 à 22:53
0
Merci
à 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.
Commenter la réponse de LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 20 août 2008 à 23:01
0
Merci
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.
Commenter la réponse de LIBRE_MAX
Messages postés
1424
Date d'inscription
mercredi 6 août 2003
Dernière intervention
29 juin 2011
- 21 août 2008 à 08:29
0
Merci
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
++
Commenter la réponse de bouv

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.