Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    VB.Net | database troppo grande!

    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?

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    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

  3. #3

    ...

    praticamente dovrei modificare la query sql?

    Ma a me servirebbe una ...paginazione dei dati....con pulsanti "avanti" e "indietro" per la navigazione...

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Premetto che non utilizzo i dataset. Ma per paginare i recordset potresti appoggiarti alla proprietà AbsolutePosition come nell'esempio :
    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
    Non ho avuto tempo di testare il codice ma il meccanismo è questo.

    Ciao,
    Ciao, Brainjar

  5. #5
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Dimenticavo,
    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,
    Ciao, Brainjar

  6. #6
    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!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.