cs_JeffC1977
Messages postés926Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention10 septembre 2010
-
31 mars 2006 à 19:51
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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
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
mcs2006
Messages postés58Date d'inscriptiondimanche 19 mars 2006StatutMembreDerniè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.
ListView1.View = lvwReport ' Crer une ligne pour affichier les différents titre des colonnes.
ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
ListView1.BackColor = &HE0E0E0
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
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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