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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!