Newsgroup: it.comp.programmare.win32
Titolo: Prestazioni con database Access

Programmo da circa un anno con Visual C++ 5.0 ed ho seri problemi
relativamente alle prestazioni di un programma che utilizza un
database Access.
Per l'utilizzo delle varie tabelle mi servo della classe CRecordset,
con le varie Open, Requery, AddNew, Edit, Update...
Nell'uso del programma succede, ad esempio, che, rientrando piů volte,
una dopo l'altra, in un dialogo, i tempi per la presentazione del
dialogo si allunghino progressivamente (in debug, certe Open prendono
20-30 sec.!!!).
Attualmente, in uno stesso dialogo arrivo ad usare al massimo dieci
tabelle, ma non so se esistano dei limiti al riguardo.
Purtroppo la situazione sta diventando insostenibile, e non ho trovato
documentazione specifica. 
Anche nei vari NG non ho mai visto trattato questo problema, il che mi
fa pensare che sto sbagliando alla base, come approccio.
Mi servirebbe qualche riferimento a testi che trattino metodiche e
tips nell'uso dei database Access, oppure qualche indicazione sui piů
comuni errori in cui cadono i principianti come me...
Grazie.

La tua domanda mi sembra un po' generica. Hai provato a seguire con il debug le varie open delle tabelle? Sono lente? Leggi i record di alcune tabelle per riempire delle liste? Le query sono scritte bene? Gli indici sulle tabelle sono giusti?
Ho usato database Access spesso, sia con Access, che con Visual Basic che con Visual C++ e non ho mai notato una lentezza intrinseca.
A risentirci.
Antonio Donatiello

una lentezza intrinseca.
Infatti, la mia constatazione che questo sembra essere un problema non
comune mi fa ritenere di essere io il colpevole...
Ma non so dove sbaglio...
Ciao.

    Verifica di aprire la connessione al DB una volta sola e non tutte le
volte che istanzi una classe derivata da CRecordset :)
Happy programming, Fabio

>(dato che i dipendenti sono 145)...
Mi stai dicendo che hai problemi con tabelle di 145 record? Hai compattato il database? Hai provato a cambiare macchina?
Antonio Donatiello

Hai compattato il database? Hai provato a cambiare macchina?
Sia compattando che cambiando macchina continuo ad avere basse
prestazioni.
Ciao.

volte che istanzi una classe derivata da CRecordset :)
Interessante. Ho sentito qualcuno accennare a questa possibilità e
all'uso di puntatori per la gestione nei vari dialoghi.
Ma come si fa?
Potrei aprire le tabelle in InitInstance, ma poi?
Se non trovo documentazione o consigli, la mia scarsissima esperienza
in Visual C++ (sono un clipperista) non mi consente di andare oltre...
Grazie per la risposta.
Ciao.

in Visual C++ (sono un clipperista) non mi consente di andare oltre...
    La documentazione non dovrebbe essere un problema, al di la' di quella
in linea, le librerie sono piene di libri su VisualC++, MFC etc etc.
Happy programming, Fabio

Scusa se intrometto ... non entro nel merito di Access ma non è che sbagli
approccio?
Sei sicuro che sia necessario aprire tutte quelle tabelle? E sei sicuro che
il database sia ottimizzato?
Invece di diventare pazzo con il codice domandati se è corretta la tua
impostazione.
Io ti consiglierei di rivedere la base di dati (magari dopo aver letto un
testo specifico) e succesivamente valutare un'impostazione dell'accesso ai
dati che minimizzi l'utilizzo dei Recordset in favore di query eseguite
direttamente sul database.
Spero di esserti stato utile.