[VBA-A]Rafraichissement d'un flexgrid
Bonjour,
je n'arrive pas a rafraichier mon flexgrid.
Je m'explique, j'ai un flexgrid que je remplis dynamiquement à l'aide d'un recordset, suivant le code ci dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
Public Sub RemplirFlex(msflex As Object, rs As Adodb.Recordset, Query As String)
'Permet de remplir une flexgrid en fonction du recordset et d'une requête.
DoEvents
Dim i As Integer
Dim j As Integer
Dim r As Integer
Dim c As Integer
On Error GoTo GestionErreur
'-- Remplir le flex s'il y a une requete
If Query <> vbNullString Then
'Tester si le recordset rattaché au flexgrid est ouvert. Dans ce cas, il est fermé, puis réouvert.
'Sinon, on l'ouvre directement.
If rs.State = adStateOpen Then
rs.Close
rs.CursorLocation = adUseServer
Else
rs.CursorLocation = adUseServer
End If
rs.Open Query, CurrentProject.Connection, adOpenKeyset, adLockPessimistic
msflex.Clear
msflex.Redraw = False
msflex.Visible = False
msflex.FixedRows = 1
msflex.FixedCols = 0
msflex.RowHeight(0) = 300
msflex.RowHeightMin = 650
msflex.WordWrap = True
If Not rs.EOF Then
rs.MoveLast
rs.MoveFirst
msflex.Rows = rs.RecordCount + 1
msflex.Cols = rs.Fields.Count
For i = 0 To rs.Fields.Count - 1
msflex.TextMatrix(0, i) = rs.Fields(i).Name
Next
i = 1
Do While Not rs.EOF
For j = 0 To rs.Fields.Count - 1
If Not IsNull(rs.Fields(j).Value) Then
msflex.TextMatrix(i, j) = rs.Fields(j).Value
End If
Next
i = i + 1
rs.MoveNext
Loop
End If
msflex.Redraw = True
msflex.Visible = True
msflex.Refresh
Else
msflex.Clear
End If
Exit Sub
GestionErreur:
MsgBox Err.desc, vbInformation, AppName & " " & AppVersion
End Sub |
Mon problème, c'est que parfois, le flexgrid ne se rafraichit pas instantanément. Je dois le fermer et le réouvrir pour que les bonnes valeurs apparaissent. Pourtant, au niveau du recordset la valeur est changée comme demandée.
Avez-vous déja expérimenté un probleme de rafraichissement avec un flexgrid? Comment en êtes vous sortis??
Merci
Anikeh!