VB6 - MSFlexGrid

cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009 - 7 sept. 2009 à 11:29
cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009 - 9 sept. 2009 à 16:44
Bonjour

je désire remplir une MSFlexGrid à partir d'une base acess
Le petit code joint fonctionne mais il ne m'affiche qu'une réponse alors qu'il y a plusieur réponse....

Set db = DBEngine.Workspaces(0).OpenDatabase("C:\DOSSIER\BASE.mdb")
sql = "SELECT * FROM TOTO where NUMERO like '" & Text1.Text & "*'"
Set ds = db.CreateDynaset(sql)
If ds.EOF Then
Titre = "RECHERCHE JOURNEE"
Message = "Aucune fiche avec ce N°, réessayer ?"
Reponse = MsgBox(Message, 48 + 4, Titre)
If Reponse = 7 Then Unload ME

End If
ligne = 1
Do Until ds.EOF
MSFlexGrid1.Rows = 0
MSFlexGrid1.Cols = 3
MSFlexGrid1.ColWidth(0) = 1500
MSFlexGrid1.ColWidth(1) = 1800
MSFlexGrid1.ColWidth(2) = 500
MSFlexGrid1.AddItem ds("CHAMPS1") & Chr(9) & ds("CHAMPS2") & Chr(9) & ds("CHAMPS3")
ds.MoveNext
MSFlexGrid1.Rows = ligne + 1
Loop
End If

Comment alterner la couleur des lignes (1 bleu puis 1 jaune et ainsi de suite)

Comment bloquer le clique dans la seconde colonne ?

Merci d'avance

dumedo

7 réponses

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
7 sept. 2009 à 15:01
Salut
A mon avis (pas vérifié), .Rows et .Cols définissent le nombre de lignes et de colonne mais pas la ligne / colonne courante --> Voir l'aide

Tu peux sortir ces lignes d'initialisation de ta boucle : inutile de répéter
MSFlexGrid1.Rows = 0 
MSFlexGrid1.Cols = 3 
MSFlexGrid1.ColWidth(0) = 1500 
MSFlexGrid1.ColWidth(1) = 1800 
MSFlexGrid1.ColWidth(2) = 500 


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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
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
7 sept. 2009 à 15:03
+ "ligne + 1" donnera toujours 2 puisque tu n'incrémentes pas "ligne"

Apprends à debuguer avec les touches F9, F8 et F5 pour suivre pas à pas ce que fait ton programme, tu trouveras les erreurs beaucoup rapidement que sur le forum.
0
xpert12 Messages postés 114 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 10 septembre 2010
7 sept. 2009 à 16:57
Salut,

je suis à la bourre, je te laisse ce bout de code pour la couleur. Si j'ai le temps, je reviendrai sur ton message.

'coloriser des lignes
*************************
Private Sub couleur_lignes()
With MSFlexGrid1

'Colorer les lignes
If .Rows > 1 Then
For i = 1 To .Rows - 1
'Lignes paires rouge
If (i - 1) Mod 2 <> 0 Then
.Row = i
For j = 1 To .Cols - 1
.COL = j
.CellBackColor = RGB(249, 170, 170)
Next
End If
Next
End If
End With

End Sub

@+
0
cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009
8 sept. 2009 à 08:46
bonjour

Merci pour vos messages.

Pour l'alternance de couleur, cela ne fonctionne pas.

Maintenant j'arrive à afficher les résultats de la requete avec le code suivant

MSFlexGrid1.Rows = 0
MSFlexGrid1.Cols = 3
MSFlexGrid1.ColWidth(0) = 1500
MSFlexGrid1.ColWidth(1) = 1800
MSFlexGrid1.ColWidth(2) = 500
Do Until ds.EOF
MSFlexGrid1.AddItem ds("champ1") & Chr(9) & ds("champ2") & Chr(9) & ds("champs3")
ds.MoveNext
Loop


Par contre je ne peux pas sélectionner la cellule que je désire.
Je ne peux que récupérer la cellule A1 en haut à gauche....
Comment faire ????

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xpert12 Messages postés 114 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 10 septembre 2010
9 sept. 2009 à 15:37
Salut,

Si mon code marche pas, c'est sûrement parce que j'ai oublié de déclaré les variables i et j :
il suffit de rajouter en ligne 2 :

Dim i, j As Integer

Ok, j'avoue c'est un gros oubli !!!

Voici donc le code corrigé :

'coloriser des lignes
*************************
Private Sub couleur_lignes()
With MSFlexGrid1
Dim i, j As Integer

'Colorer les lignes
If .Rows > 1 Then
For i = 1 To .Rows - 1
'Lignes paires en rose
If (i - 1) Mod 2 <> 0 Then
.Row = i
For j = 1 To .Cols - 1
.Col = j
.CellBackColor = RGB(249, 170, 170)
Next
End If
Next
End If
End With

End Sub
0
xpert12 Messages postés 114 Date d'inscription lundi 5 février 2007 Statut Membre Dernière intervention 10 septembre 2010
9 sept. 2009 à 15:39
Aïe !!! Grosse faute d'orthographe en plus. "j'ai oublié de déclarer" et non...

bon, je repars me coucher.

@+
0
cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009
9 sept. 2009 à 16:44
Bonjour

je te remercie et tout marche pour le mieux...

Un grand merci encore
0
Rejoignez-nous