Newsgroup: it.comp.lang.delphi
Titolo: ADO e fetch dei dati

Ciao a tutti,
ho terminato da poco la conversione di un mio programma che usava BDE ad
ADO (DBMS MSDE). 
Mi sono però accorto che quando visualizzo i dati in griglia (anche
semplicemente codice e descrizione) BDE appena aveva un pò di dati
disponibili li rendeva disponibili subito e si poteva interagire
immediatamente con la griglia, ADO li rende invece disponibili quando li
ha pronti tutti. ADO è più performante nel restituire tutto il recordset,
ma l'operatore ha l'impressione di aspettare di più rispetto a prima, in
quanto non può interagire da subito con la griglia.
Qualcuno è a conoscenza di un qualche modo per forzare da subito il fecth
dei dati?
Grazie a chi mi vorrà aiutare.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 dei dati?
Non entro in merito al tuning delle prestazioni, ma ti suggerisco di
clessidrare il cursore e impostare dataset.disablecontrols prima della tua
open. Ovviamente alla fine della open riabilita i controlli.
In altre parole, congela l'interfaccia cosi' che l'utonto non tenti di
cliccare a muzzo in giro per la griglia e il form...
Un suggerimento: se la mole dei dati da caricare e' davvero tanta, hai
provato ad usare un tclientdataset?
Ciao
-- 
Morde

 provato ad usare un tclientdataset?
Non lo conoscevo, ho comunque visto che deriva dal TDataset. Se posso
usarlo come una TQuery (TAdoQuery) e collegarlo ad una DBGrid forse fa al
caso mio. Adesso provo.
Grazie e ciao


100.000 records.
Non è corretto, non ha senso caricare tutti quei record in un dataset.
Cerca di ridurre al minimo i dati estratti, da subito.

 Cerca di ridurre al minimo i dati estratti, da subito.
Infatti: la proprietą packetrecords del CDS potrą aiutare l'OP a risolvere
il suo problema.
-- 
Morde

il suo problema.
Non è tanto il valore della proprietà PacketRecords quello a cui mi
riferivo, quanto a una costruzione più mirata dello statement SQL.
Non ha senso, poi, usare un CDS per una query di ricerca.

 Non ha senso, poi, usare un CDS per una query di ricerca.
Non capisco la tua affermazione sull'evitare di usare un CDS a fronte di
una query di ricerca (ricerca nel senso di select from vista/tabella ?).
Puoi spiegarti meglio per favore?
-- 
Morde

Puoi spiegarti meglio per favore?
Il CDS va usato quando vuoi avere un resultset "live" su cui lavorare.
I risultati delle ricerche di solito non si modificano.

Andrea Laforgia ha scritto:



Ciao a tutti e grazie per il tempo che mi state dedicando.
Innanzi tutto direi che sono d'accordo con Andrea: Tipicamente, sopratutto
in caso di ricerca non ha alcun senso ritornare dei dataset molto ampi.
Personalmente ritengo che quando ho visualizzato 200 righe l'operatore
preferisce restringere il campo di ricerca piuttosto che scorrerle tutte. 
Il 'problema' č che il mio programma, quando usava BDE, apriva una query
grande, ma l'operatore non se ne accorgeva in quanto quando arrivavano le
prime righe in griglia poteve iniziare a scorrerla, aprire una finestra di
modifica o restringere la ricerca, senza aspettare il fecth completo delle
righe. Se premeva [Ctrl]+[Fine] aspettava, ma aveva fatto una operazione.
Oggi, con ADO, l'operatore deve sempre aspettare il fecth completo delle
righe, che č piů veloce del [Ctrl]+[Fine] con BDE, ma non lo ha richiesto. 
Infine potrei aver bisogno di visualizzare tante righe in quanto il mio
programma permette di fare delle modifiche multiple alle anagrafiche. In
questi casi l'operatore seleziona le righe da modificare, imposta la
modifica e la applica. Con BDE l'operatore poteva da subito impostare la
selezione: al limite se arrivava sull'ultima riga visualizzata doveva
attendere che ne arrivassero altre. Ora deve aspettare che arrivino tutte,
poi puň iniziare a selezionarle.
E' per questo che mi piacerebbe fare il fecth delle righe come faceva BDE.
Se me la vedo brutta metterň un'opzione sulla griglia in cui indico il
numero massimo di righe da estrarre (la salverň come il layout ed ogni
griglia avra la sua, modificabile dall'operatore, ed indipendente dalle
altre), ma prima mi piacerebbe cercare altre soluzioni.
A domani



Cristiano
--- posted by geoForum on 
http://www.delphiedintorni.it

 righe, che è più veloce del [Ctrl]+[Fine] con BDE, ma non lo ha richiesto.
Anche con ADO è possibile gestire il fetch parziale dei dati.
Che componente stai usando?


 Puoi tranquillamente utilizzare un ClientDataset,[...]
Il CDS non va bene se i dati sono veramente tanti. E' studiato per
elaborare moli di dati relativamente piccole.


 Che componente stai usando?
TAdoQuery, il DBMS è MSSQL 2000 o MSSQL 2005.
Delphi però e Delphi 5, ma a breve conto di aggiornarmi.
Grazie e Ciao
