DATAGRID VB6 con >65000 record: scroll difficoltoso!!

di il
13 risposte

DATAGRID VB6 con >65000 record: scroll difficoltoso!!

Ciao

ho un programmino VB6 che mi registra dei record in tabella DATAGRID in una quarantina di campi, con o senza dati, per record.

Ho notato che se supero i ~65000 record... diciamo 66000-67000 e superiori, non riesco più a fare correttamente lo scorrimento laterale sulle freccette: SCORRI FINO A QUI per andare all'ultimo record in fondo alla tabella.

anche se trascino manualmente la barra laterale in fondo all'ultimo, questa come rilascio ritorna in cima.

Pensavo fosse un problema dei/nei dati che qualcosa mandava in tilt lo scorrimento, invece ho potuto verificare che se supero i 65000 campi linea contenuti nel DATAGRID e se sposto lo scorrimento laterale da in cima in fondo NON SI RIESCE PIÙ se non posizionandosi (sia con lo scorri fino a qui che con la barra laterale) attorno ai 65000 e poi scorrendo col cursore o PGDW fino all'ultimo.

Anche il TASTO DESTRO sulla freccetta in basso, sempre solo con > 65000 record, e premendo SCORRI FINO A QUI, si sposta solo di qualche centinaio di record...

La tabella anche con 100'000 campi funziona perfettamente, solo lo scorrimento da in cima in fondo non funziona correttamente per > 65000.

Qualche soluzione da apportare al DATAGRID ricordo qualcosa anche tipo AS LONG come per i numerici che altrimenti si fermava per overflow....


GRAZIE PER UN POSSIBILE AIUTO!!!!!!!!!!!!

13 Risposte

  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Il VB6 e la sua griglia è limitato. Sicuramente non adatto allo scopo, dovrai passare a strumenti più recenti se vuoi proprio fare quello che chiedi.

    Ma la questione è un'altra. Che te ne fai di una griglia di 65000 record?? E' assolutamente inutilizzabile per un utente.
    Non si presentano tanti dati in una interfaccia, dovresti limitare il numero di record presenti nella griglia adottando una metodica "a pagine".

    P.S. Inutile scrivere AIUTO nel titolo ...
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Impensabile sostituire strumento... poco anche per la "paginazione"...

    Vorrei poter risolvere anche parzialmente sempre usando il datagrid di vb6.
    Quando apro la tabella e mi presento i vari record e me li faccio vedere tutti.
    Una scelta dovuta che non risolve il problema che superati i >65000 record il DATAGRID di VB6 non consente più uno scroll all'ultimo della lista.

    Almeno raggiungere il "focus" sull'ultimo record potrebbe già risolvermi parzialmente...

    Ho provato coi vari comandi ma sicuramente sbaglio.

    Ho il numero dei record "selezionati" che ottengo con

    DataGrid1.ApproxCount

    fatto un paio di prove se possibile selezionare il focus sul record ultimo ottenuto senza risultato con un tastino...
    oppure limitando la visione in tabella degli ultimi <65000, ma non saprei come...
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Non ho capito cosa vuoi dire ma ti ripeto quello che ti ho detto.

    Se vuoi visualizzare una parte devi scrivere opportunamente la SELECT. Cosa hai scritto?
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Si, i SELECT ci sono ma centrano poco se lo scroll all'ultimo non funziona se DataGrid visualizza >65000 record.

    C'è comunque la possibilità di raggiungere l'ultimo record visualizzato nel datagrid che mi risolverebbe in parte??

    Così metto un tasto col codice per selezionare l'ultimo record del datagrid, raggiungendo l'ultimo in fondo alla tabella.
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Certo che c'entra, intendo che la SELECT va scritta in modo da ottenere solo una parte dei record, diciamo 'per pagine'

    Cosa hai scritto?
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Uso diverse SELECT ma necessito comunque di poter "vedere" anche oltre i >65000 record... che vedo ma senza un corretto funzionamento della barra laterale di scorrimento.

    Nel caso, come/cosa inserire per vedere solo gli ultimi 60'000 se uso un SELECT semplice ordinato per data tipo:

    SELECT * FROM DataBase ORDER BY TDATE ' TDATE è un campo con ORA e DATA e DataBase contiene 500'000 record

    Sempre usando DATAGRID:
    Sarebbe possibile vedere solo gli ultimi 60'000??
    inoltre magari posizionarsi direttamente sull'ultimo record?

    Potrei risolvere parzialmente la NON funzionalità dello scroll in DATAGRID >65000 record.
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    E' un limite della vecchissima griglia del vecchio VB6. Non puoi trattare tante righe (e fra l'altro, sempre secondo me, non ha senso per un utente avere in una griglia 60000 record da vedere).

    Comunque, di quale DBMS stiamo parlando? SQL Server? MySql? Altro?

    Così vedi 100 record dall'ultimo al primo (nella prima riga vedrai il più recente)

    SELECT TOP 100 * FROM DataBase ORDER BY TDATE DESC
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Apro con:

    Set db = New ADODB.connection
    db.CursorLocation = adUseClient
    db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_Name & ";"
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Non sai quale DBMS stai utilizzando?
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    E con la variabile "CRITERIO" che la metto nella linea...

    Set adoPrimaryRS = New ADODB.Recordset
    adoPrimaryRS.Open Criterio, db, adOpenDynamic, adLockOptimistic

    comunque il

    Criterio = "SELECT TOP 100 * FROM DataBase ORDER BY TDATE DESC"

    non mi va

    mentre
    Criterio = "SELECT * FROM Log ORDER BY TDATE"
    funziona bene
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Che vuol dire "non mi va"? Hai un errore?

    E non hai risposto al tipo di DB ... ovviamente sarà Access (un mdb) ... ma puoi anche dirlo

    Ovviamente ho scritto Database ma tu devi mettere il nome del tuo DB (che dovrebbe essere Log).
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Ops...mi era sfuggita la domanda... si è con un mdb access

    Mi dava errore, .... sorry... avevo dimenticato il *

    con questa funziona....

    Criterio = "SELECT TOP 3000 * FROM Log ORDER BY TDATE DESC"

    me li da nella tabella, perfetto, ma dovrei ordinarli al contrario, cioè in cima i più vecchi e in fondo alla tabella gli ultimi (recenti) in fondo... prendendo comunque sempre gli ultimi inseriti riferendomi al TDATE...

    Se cambio con ASC mi fa vedere i PRIMI 3000 in ordine di data e non gli ultimi...

    in pratica dopo il DESC dovrei riordinare la tabella in ordine ASC... sicuramente sbaglio qualcos'altro...
  • Re: DATAGRID VB6 con >65000 record: scroll difficoltoso!!

    Ah ecco.... dopo aver fatto la tabella rifaccio un SORT con:

    adoPrimaryRS.Sort

    non so se ci sia qualcosa di meglio...
Devi accedere o registrarti per scrivere nel forum
13 risposte