VB6 Voir le données du Listview au démarage

Signaler
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Salut...

Petite question que j ene réussi pas à saisir pourquoi ca ne fonctionne pas...

Je veux que lorsque je démarre mon programme je vois dans mon listview la totalité de ma base de données Access.

Je suis capable de faire afficher une partie de ma base de données en faisant des requêtes (En faisant une recherche) et j'utilise ce code...

If BDRecetteListView.RecordCount <> 0 Then


BDRecetteListView.MoveFirst
While Not BDRecetteListView.EOF


With ListView1.ListItems.Add(, , IsN(BDRecetteListView!Recette)) 'Colonne 1
.SubItems(1) = IsN(BDRecetteListView!Type) ' Colonne '2
.SubItems(2) = IsN(BDRecetteListView!Volume) ' Colonne 3
.SubItems(3) = IsN(BDRecetteListView!Numero) ' Colonne 4
.SubItems(4) = IsN(BDRecetteListView!Page) ' Colonne 5
.SubItems(5) = IsN(BDRecetteListView!Autre) ' Colonne 6
.SubItems(6) = IsN(BDRecetteListView!Cote) ' Colonne 7
.SubItems(7) = IsN(BDRecetteListView!Note) ' Colonne 8
'.SubItems(8) = IsN(BDRecetteListView![Repas Rapide])
End With

BDRecetteListView.MoveNext


Wend
*******************************************************************
J'ai donc mit dans le Load de ma Form le même code en enlevant cette ligen de code...
If BDRecetteListView.RecordCount <> 0 Then

et ca ne fonctionne pas.... Pourquoi ????

Si quelqu'un peut m'aider
A voir également:

3 réponses

Messages postés
58
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
1 mai 2006

Bonjour,

C'est peut-être parce que tu le mets dans le load ?

Perso, en VB6, je remplis mes list (view ou box) et combo etc ... avant le load de la form ou dans l'évènement activate de la form suivant l'utilisation.
Dans le load, ça se comporte bizarrement car à ce moment le prog charge la fenêtre et ses contrôles. Si tu veux les initialiser en même temps, il y a risque de carambolage.
D'autre part, l'évènement load ne sera exécuté QUE lors du 1er chargement de la form pendant l'exécution du prog, même si tu fais un unload (bizarrerie du VB6).

Donc, essaie de mettre ton code dans l'évènement activate de ta form et dis nous si c'est mieux.
N'oublie pas quand même de coder un ListView1.ListItems.Clear avant le remplissage.
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
4
Salut....

J'ai fait un Private Sub Form_Activate()
et ca ne fonctionne pas peut-être que ma façon est encore mauvaise

Dans mon Load J'ai la commande Init_Listview qui est égal à

Private Sub Init_ListView()
'Initialisation de la listview


ListView1.View = lvwReport
ListView1.FullRowSelect = True



ListView1.View = lvwReport ' Crer une ligne pour affichier les différents titre des colonnes.
ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
ListView1.BackColor = &HE0E0E0


ListView1.ColumnHeaders.Add , , "Recette", ListView1.Width / 4
ListView1.ColumnHeaders.Add , , "Type", ListView1.Width / 8, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Volume", ListView1.Width / 12, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Numéro", ListView1.Width / 12, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Page", ListView1.Width / 12, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Autre", ListView1.Width / 7, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Cote", ListView1.Width / 15, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Note", ListView1.Width / 10, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Commentaire", ListView1.Width / 7, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Repas Rapide", ListView1.Width / 5, lvwColumnCenter





End Sub

Dans mon Activate j'ai ce code...

Private Sub Form_Activate()


ListView1.ListItems.Clear


Set BDRecetteListView = New ADODB.Recordset
BDRecetteListView .MoveFirst
While Not BDRecetteListView.EOF


With ListView1.ListItems.Add(, , IsN(BDRecetteListView!Recette)) 'Colonne 1
.SubItems(1) = IsN(BDRecetteListView!Type) ' Colonne '2
.SubItems(2) = IsN(BDRecetteListView!Volume) ' Colonne 3
.SubItems(3) = IsN(BDRecetteListView!Numero) ' Colonne 4
.SubItems(4) = IsN(BDRecetteListView!Page) ' Colonne 5
.SubItems(5) = IsN(BDRecetteListView!Autre) ' Colonne 6
.SubItems(6) = IsN(BDRecetteListView!Cote) ' Colonne 7
.SubItems(7) = IsN(BDRecetteListView!Note) ' Colonne 8
'.SubItems(8) = IsN(BDRecetteListView![Repas Rapide])
End With

BDRecetteListView.MoveNext


Wend


End Sub

Ca me sort comme message d'erreur au démarrage...

Cette opération n'est pas autorisée si l'objet est fermé.

Il est évident que cette ligne de ocde doit être dans mon Load
BDRecetteListView.Open "Select * from [Recette]", Connection, adOpenDynamic, adLockOptimistic

J'attends ton aide

merci d'avance
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
En fait, quand tu fais un "Set ... = New ADODB.RecordSet", tu ne fais que créer un objet capable de stocker des données d'une DB.
Tu n'as pas été questionner ta DB.
Il te faut donc ajouter :
- Une connexion à ta DB :
Dans la partie Déclaration de ta forme ou dans un Module : L'objet doit être accessible ne n'importe où dans ton code)
Public gCN As ADODB.Connection
Quand tu veux te connecter :
Set gCN = New ADODB.Connection
gCN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=C:\mon Rep\maDB.MDB"
gCN.Open
- Ensuite, si tu veux charger des enrtegistrements dans ton RecordSet, il faut préparer une requète SQL :
Tu gardes ta déclaration :
Set BDRecetteListView = New ADODB.Recordset
Tu prépares ta requète SQL :SQL "Select * From maTable Where NomRecette 'Tarte aux poireaux"
Tu exécutes cette requète :
BDRecetteListView.Open SQL, gCN, adOpenStatic, adLockReadOnly

Ensuite, tu peux gérer l'insertion des données comme tu l'as fait avec le MoveFirst et tout le tralala.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro