Flexgrid et données venant d'une base [Résolu]

Signaler
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016
-
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016
-
Bonjour à tous

je débute en visual basic et je cherche à récupérer les données d'une base access dans une msflexgrid.

J'ai donc le code suivant:

'On règle la MSFlexGrid1
MSFlexGrid1.ColWidth(0) = 1955
MSFlexGrid1.ColWidth(1) = 1500
MSFlexGrid1.ColWidth(2) = 1500
MSFlexGrid1.Rows = 2
MSFlexGrid1.FixedRows = 1
MSFlexGrid1.FixedCols = 0
MSFlexGrid1.TextMatrix(0, 0) = "Nom d'affichage"
MSFlexGrid1.TextMatrix(0, 1) = "Nom"
MSFlexGrid1.TextMatrix(0, 2) = "Prénom"





'On séléctionne les differents groupes
sql = "select affichage,nom, prenom from contacts"
Set rs = db.OpenRecordset(sql, dbOpenSnapshot)





Dim i As Long
While Not rs.EOF


for i = 1 to 10


MSFlexGrid1.TextMatrix(1, 0) = rs.Fields("affichage")
MSFlexGrid1.TextMatrix(1, 1) = rs.Fields("nom")
MSFlexGrid1.TextMatrix(1, 2) = rs.Fields("prenom")





rs.MoveNext
next i
Wend

Mais ce code me renvoi l'erreur suivante:

Erreur 381 index hors limite

J'ai essayé via ce forum de résoudre le pb mais je n'ai pas réussi.

Je fais donc appel à vos lumières...

merci d'avance

3 réponses

Messages postés
268
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
19 janvier 2017
2
Pour remplir une MSFlexgrid avec les données d'un Recordset, il faut :
- Créer une fonction pour positionner le contenu de chaque champ dans la cellule correspondante. Cette fonction, fournie par Microsoft dans l'aide de MSDN s'écrit de la manière suivante :

Public Function Fgi(r As Long, c As Long, msFG As MSFlexGrid) As Long
Fgi = c + msFG.Cols * r
End Function

Ensuite pour entrer les données dans les cellules :
Dim r As Long, lNbEnr, bNbFields As Byte, c As Byte

rs.MoveLast
lNbEnr=rs.RecordCount
bNbFields=rs.Fields.Count
rs.MoveFirst
With MSFlexgrid1
.Rows = lNbEnr + 1
.Cols = bNbFd
.FixedRows = 1
.FixedCols = 0
'Creation des en têtes de colonnes
For c=0 To bNbFields-1
.TextArray(Fgi(0, c, MSFlexgrid1))=rs.Fields(c).Name
Next c
'Ecriture des données
For r=1 To lNbEnr
For c=0 To bNbFields-1
If Not IsNull(rs.Fields(c)) Then .TextArray(Fgi(r, c, MSFlexgrid1))=rs.Fields(c)
Next c
rs.MoveNext
Next r
...
Ce code fonctionne correctement.
Bon courage!...
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 160 internautes nous ont dit merci ce mois-ci

Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016

Merci pour ta réponse!! ca marche bien!!
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016

Merci pour ta réponse!! ca marche bien!!