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

cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 31 mars 2006 à 19:51
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 1 avril 2006 à 04:01
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

3 réponses

mcs2006 Messages postés 58 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 1 mai 2006
31 mars 2006 à 20:30
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.
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
31 mars 2006 à 21:33
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 avril 2006 à 04:01
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
0
Rejoignez-nous