Newsgroup: it.comp.lang.delphi
Titolo: Troppe query di seguito impallano il sistema

Buongiorno a tutto il NG.
Il mio problema è il seguente: Devo creare un file di testo con molte linee.
A questo scopo all'interno di un loop dove creo la singola linea del file 
eseguo diverse query per reperire i dati che mi servono e comporre la linea.
Le query (tutte dei SELECT) sono circa una ventina per ogni linea, ed le 
linee finali dovrebbero essere circa 1000, ma alla 250a  ripetizione circa 
(non è sempre la stessa) il sistema si impalla con il messaggio di errore 
"Unable to execute query".
Tenendo conto che uso Delphi 6, MySQL 4.0.20, e come componente per 
l'accesso ai dati le DBExpress e che per ogni query "volante" creo un 
oggetto TSQLClientDataSet che libero subito dopo avere reperito i dati 
(metodi Close e Free) .... dove sbaglio?

 (metodi Close e Free) .... 
xche fai questo?
-- 
Alberto Salvati
A *Neapolitan* delphi developer who is studing c# & .Net
"Dicette 'o pappece 'nfaccia 'a noce dammi 'o tiempo che pure te spertoso!"

 xche fai questo?
Per liberare la memoria da un oggetto non piů necessario. Sbaglio?

 Per liberare la memoria da un oggetto non più necessario. Sbaglio?
ma *è necessario*, no?
che senso ha mettere in un loop la creazione e la distruzione di un 
oggetto necessario ad ogni iterazione?
Lo crei *prima* dell'inizio del ciclo for.
Poi, usi try..finally per essere sicuro che venga liberato alla fine del 
loop.


Mi č venuto in mente che non ho spiegato una cosa fondamentale: per le query 
"volanti", cioč quelle non legate a controlli dataaware istanzio ogni volta 
un oggetto TSQLClientDataSet che libero dopo aver utilizzato i dati che mi 
servono. E' forse questo l'errore? 

 loop.
Giusto, in effetti hai ragione, io mi appoggio a una vecchia routine di 
creazione query che avevo creato a scopo generico e che istanzia l'oggetto 
tsqlclientdataset ogni volta che viene chiamata, quindi terminato l'utilizzo 
dovevo liberarla. mi sa che sia questo il problema...adesso provo.
mannaggia la pigrizia! :-)
Grazie 

E' forse questo l'errore?
yes, Salvati's followup docet.
;)
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 tsqlclientdataset ogni volta che viene chiamata
se devi fare solo operazione while not dataset.eof in modo 
unidirezionale xche usare tsqlclientdataset e non tsqlquery?


 xche usare tsqlclientdataset e non tsqlquery?
Adesso provo anche questo.
in effetti grazie al tuo prezioso consiglio con i tsqlclientdataset 
istanziati solo all'inizio della procedura la situazione è migliorata anche 
se non completamente (si impalla molto dopo).
Ora provo con i tsqlquery.
Grazie ancora 

Anche con i tsqlquery la situazione č migliorata, ma se provo ad eseguire la 
procedura tre o quattro volte di seguito mi ripropone il messaggio "unable 
to execute query".
Io mi accontento, č piů che sufficiente eseguirla una volta sola questa 
generazione di file, ma il dubbio che continui a sfuggirmi qualcosa rimane.
Comunque grazie 

A chiunque possa interessare.
Sostituendo i controlli di accesso ai dati da dbexpress ai zeos ho risolto 
il problema e l'applicazione funziona a meraviglia.
Non dico che sia colpa direttamente dei dbexpress, forse sono io che non ho 
settato correttamente qualche proprietą fondamentale, ma tant'č.