Newsgroup: it.comp.lang.visual-basic
Titolo: [?] MSHFlexGrid lenta

Ciao a tutti.
Ho necessita' di visualizzare un elenco di record. Non sono tanti:
saranno si' e no un paio di migliaia. Comunque non arriveranno a
5.000.
Per il momento, sono circa 500.
Ho messo una MSHFlexGrid con 4 colonne --1 delle quali non e' visibile
perche' fuori area: mi serve solo per operazioni di controllo-- e
aggiungo le righe in questo modo:
Private Sub AggiornaComboNote()
Dim Rs As ADODB.Recordset
Dim IstruzioneSQL As String
 
    IstruzioneSQL = "SELECT matricola, categoria_nota, testo_nota,
id_nota " _
        & "FROM note_macchine_speciali " _
        & "ORDER BY matricola, categoria_nota, testo_nota" _
        & ";"
    Set Rs = EstraiRecord(IstruzioneSQL)
    With Rs
        gridNote.Rows = 0
        'mi serve una riga per l'intestazione delle colonne
        gridNote.Rows = .RecordCount + 1
        gridNote.Row = 0
        Do While Not .EOF
            gridNote.Row = gridNote.Row + 1
            gridNote.ColAlignment(0) = flexAlignLeftCenter
            gridNote.Col = 0
            gridNote.Text = .Fields(0).Value
            gridNote.ColAlignment(1) = flexAlignLeftCenter
            gridNote.Col = 1
            gridNote.Text = .Fields(1).Value
            gridNote.ColAlignment(2) = flexAlignLeftCenter
            gridNote.Col = 2
            gridNote.Text = .Fields(2).Value
            'inserisco anche l'id nella tabella, senza che sia
visualizzato
            'mi e' utile quando devo eliminare o modificare una nota
            gridNote.Col = 3
            gridNote.Text = .Fields(3).Value
            .MoveNext
        Loop
    End With
 
    gridNote.Row = 1
    gridNote.RowSel = 1
 
    Rs.Close
 
    Set Rs = Nothing
End Sub
Il problema e' che per 500 record ci metto 6 o 7 secondi ad eseguire
tutta la procedura, tra l'altro con uno sfarfallio che sembra debba
suonare un cellulare nei dintorni =)
Inutile dire che e' un tempo assolutamente troppo lungo: cosa dovrei
fare per velocizzare la cosa?
Grazie in anticipo.
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro RomagnoloŽ, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-VI --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD
   On contrary of popular belief, Unix *IS* user friendly:
    it just appears to be selective who it is friend with

io uso praticamente la tua stessa sintassi, ma per caricare al massmo 100
righe.
anche a me faceva l'effetto "sfarfallio", decisamente odioso...
almeno quello lo puoi risolvere mettendo un Mshflexgrid1.visible=false
all'inizio del caricamente, visualizzando un form che ti dica "attendere
prego..." e poi rivisualizzando il flex bello e completo.
ma per i 6-7 secondi non so propri ocome aiutarti, il flex č lento di
suo...e c'č ben poco da fare, che io sappia...
MarioH

   VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!


fare per velocizzare la cosa?
Come ti ha detto anche Stefano (News),  ti conviene usare la proprieta'
TextMatrix o la TextArray (eviti cosi' lo spostamento continuo della cella attiva)
Inoltre su msdn c'e'
MSFlexGrid Tips and Tricks
di Frank Sommer
ciao, hal

di Frank Sommer
Ullalla' :) Questo vedro' di leggerlo, visto che sto usando
MSHFlexGrid ovunque :)
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
