questione penosa.., un Server Windows 2008 con DC + Cache Write disabilitata + servizi vari, impiega diversi secondi ad eseguire una query
anche di soli 10 record, che il Blob sia da 2 Mb o da 100 Mb non cambia.
TB_IMMAGINI.IMMAGINE e' il campo Blob
e' un problema di comunicazione clinet -> server widows, su qualuque Pc in lan (anche un vecchio Nb con XP e 512 mb ram, anche se completa la query in 10-15 sec non compare mai "non rsiponde")
SELECT TB_IMMAGINI.ID, TB_IMMAGINI.DATA, TB_IMMAGINI.NOMEFILE, TB_IMMAGINI.DIMENSIONE, TB_IMMAGINI.IMMAGINE
FROM TB_IMMAGINI
WHERE TB_IMMAGINI.ID <:IdValore
ORDER BY TB_IMMAGINI.ID
il problema e' che superati 5 sec di attesa, nel titolo del form appare "non risponde", dando l'impressione di applicazione congelata.
per verifica ho provato a creare un Timer che si attiva prima dell'esecuzione della Query (per visualizzare un messaggio e incrementare un contatore) e disattivarsi a Query eseguita.
mi sembra che non serva, durante l'esecuzione della Query il contatore sui ferma in ogni caso
La cosa a quanto pare dipende dalle code dei mesasggi di windows, c'e' modo di evitararlo/interecettare il messaggio ?
a mio modo di vedere anche un thread non risolverebbe i restando comunque in attesa dell'esecuzione della Query.
//query di selezione
ZQuery1.ParamByName('IdValore').AsInteger := iNrRecordQuery; //iNrRecordQuery un valore che inserisco in un TEdit per stabilire quanti record estrarre
ZQuery1.Prepare;
ZQuery1.Open;
bStatoTimer := false;