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

Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016
- - Dernière réponse : bcmfr
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016
- 8 mars 2006 à 10:01
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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
268
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
19 janvier 2017
2
3
Merci
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!...

Dire « Merci » 3

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

Codes Sources 142 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
0
Merci
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
0
Merci
Merci pour ta réponse!! ca marche bien!!