Ragazzi ho un database access con 22.000 record . Cercando di aprirlo in un dataset ... l'applicazione va in tilt....
Avete qualche suggerimento o soluzione a proposito?
Esiste un modo per visualizzare dati in un dataset a 20-30 record la volta?
Ragazzi ho un database access con 22.000 record . Cercando di aprirlo in un dataset ... l'applicazione va in tilt....
Avete qualche suggerimento o soluzione a proposito?
Esiste un modo per visualizzare dati in un dataset a 20-30 record la volta?
Rendi più ristretto il numero di record estratti, magari con un filtro e/o affinando la query di selezione. Se ottieni il recordset con una generica "SELECT * FROM TABELLA" li carichi proprio tutti.
Ciao,![]()
Ciao, Brainjar
praticamente dovrei modificare la query sql?
Ma a me servirebbe una ...paginazione dei dati....con pulsanti "avanti" e "indietro" per la navigazione...
Premetto che non utilizzo i dataset. Ma per paginare i recordset potresti appoggiarti alla proprietà AbsolutePosition come nell'esempio :
Non ho avuto tempo di testare il codice ma il meccanismo è questo.codice:Dim rs as adodb.RecordSet Dim cn as adodb.Connection .... ' Apertura connessione Set cn = New adodb.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=TuoDB.mdb;Persist Security Info=False" .... ' Estrazione con tua query Dim rs as ADODB.RecordSet Set rs = New adodb.Recordset rs.Open "Select * from TuaTabellaGrandissima", cn, adOpenStatic, adLockOptimistic ' Dichiari una variabile che ti faccia da cursore Public RecCursor as Long ' Con rs.RecordCount ti ricavi quanti record hai nel RecordSet Private Sub BottoneAvanti_Click() Dim i as Long ' Quanti record vuoi per volta, poniamo 30 ' Potresti parametrizzare anche questo numero RecCursor = RecCursor + 30 if RecCursor > rs.RecordCount - 1 Then RecCursor = rs.RecordCount - 1 ' arrivi all'ultimo End Sub Private Sub BottoneIndietro_Click() ' Quanti record vuoi per volta, poniamo 30 ' Potresti parametrizzare anche questo numero RecCursor = RecCursor - 30 if RecCursor < 0 Then RecCursor = 0 ' Cominci dal primo End Sub Public Sub ElaboraRecords() Dim i as Long For i = RecCursor - 30 To RecCursor - 1 rs.AbsolutePosition = i ' In questo punto hai il record in posizione i ' Facci quello che vuoi, per esempio aggiungilo ad una ' griglia ecc.. Next i End Sub
Ciao,![]()
Ciao, Brainjar
Dimenticavo,
Ciao,codice:Private Sub BottoneAvanti_Click() Dim i as Long ' Quanti record vuoi per volta, poniamo 30 ' Potresti parametrizzare anche questo numero RecCursor = RecCursor + 30 if RecCursor > rs.RecordCount - 1 Then RecCursor = rs.RecordCount - 1 ' arrivi all'ultimo ElaboraRecords() End Sub Private Sub BottoneIndietro_Click() ' Quanti record vuoi per volta, poniamo 30 ' Potresti parametrizzare anche questo numero RecCursor = RecCursor - 30 if RecCursor < 0 Then RecCursor = 0 ' Cominci dal primo Call ElaboraRecords() End Sub![]()
Ciao, Brainjar
22.000 record non sono tanti per una query SQL quindi quello che fallisce sicuramente è l'oggetto, non potresti ad esempio visualizzarli di 1000 in 1000?![]()
Let's your dream came true!