Esiste un componente DBGrid in grado di gestire velocemente set di dati di grandi dimensioni?
-
03-07-2019 - |
Domanda
Grandi set di dati, milioni di record, richiedono una programmazione speciale per mantenere la velocità in DBGrid.
Voglio sapere se ci sono componenti già pronti per Delphi (DBGrids) che lo fanno automaticamente?
MODIFICA Ad esempio: alcuni database hanno funzionalità come recuperare i primi record X (ad es. 100 record). Quando raggiungo il fondo con lo scorrimento, voglio recuperare automaticamente i 100 successivi. Al contrario, quando arrivo all'inizio, voglio recuperare i 100 precedenti. So di poter programmare questo, ma è sicuro che è possibile propagare quella funzione in un Controllo DBGrid in cui DBGrid esegue il buffering. Ciò consentirà di risparmiare un bel po 'di programmazione: devi semplicemente impostare la dimensione del buffer "quot" per così dire.
Soluzione
Vorrei dare un'occhiata a Developer Express QuantumGrid Suite . (@birger: eri solo un segno di spunta più veloce ;-)) Quindi non sto solo duplicando la risposta, qualche elaborazione:
DevExpress Grid utilizza un controller di dati che ha diverse modalità per controllare i dati associati alla griglia. Uno di questi è esattamente quello che stai cercando:
Modalità griglia
Quando si utilizza la modalità griglia, solo una fissa viene caricato il numero di record del set di dati nella memoria. Perché solo un limitato set di record vengono recuperati da set di dati, ordinamento automatico, filtro e i calcoli di riepilogo sono disabilitati in modalità griglia (deve essere controllato manualmente invece). Per impostazione predefinita, questo la modalità è disabilitata e il ExpressDataController carica tutto record in un set di dati.
Ha alcuni inconvenienti, che sembrano abbastanza ovvi: non puoi fare un riassunto, ordinare o filtrare se non hai tutti i record a portata di mano.
Altri suggerimenti
Potresti dare un'occhiata al meraviglioso (gratuito, open source, dual licenziato come MPL 1.1 e GPL quindi utilizzabile in app chiuse) Virtual TreeView e i suoi discendenti forniti dall'utente (scorri verso il basso la pagina per trovarli.)
Modifica per riflettere la modifica della domanda: Virtual TreeView non solo ti consente di gestire milioni di nodi senza tenerli in memoria, ma questo è in realtà il modo preferito di usarlo. Fornisci i dati tramite callback di eventi quando è necessario e puoi dire all'albero di memorizzare nella cache quei dati (o meno)
Oh, e ovviamente ha anche una modalità grid / report in cui può funzionare come una tabella (basta impostare la proprietà GridExtensions su True.)
NextGrid è una griglia leggera, veloce e piacevole per Delphi
http://www.bergsoft.net/component/next-grid /features.htm
TRATTAMENTO DI GRANDI IMPORTI DI CELLULE SENZA VELOCITÀ DI VELOCITÀ
NextGrid può gestire quantità molto grandi di cellule senza perdere velocità. Velocità di aggiunta, modifica ed eliminazione di dati non dipende dalla quantità di cellule. Nella demo di NextGrid puoi vedere quanto velocemente NextGrid funziona con 100.000 righe e 10 colonne = 1.000.000 di celle
Penso che DevExpress Quantumgrid supporta questo molto bene.
scusa, ho appena visto il tuo commento a Neftal & # 237;
se vuoi portare 100 record alla volta e poi recuperare i successivi 100, questo lavoro relativo ai componenti di accesso al database, guarda i componenti devart , offrono componenti di accesso diretto al database più usato e hanno la funzione di cui stai chiedendo e altro ancora: