Newsgroup: it.comp.appl.access
Titolo: Ottimizzare una maschera.

Ho una maschera molto complessa di accesso a circa 15.000 record.
Il tempo di attesa scorrendo gli interventi è diventato molto (troppo) lungo, complici i vari eventi legati alla maschera.
Mi sto arrovellando per cercare, capendo anche quel che faccio, di ottimizzarne il funzionamento.
 
Ho ancora qualche dubbio e ringrazio sin d'ora tutti quelli che avrannno la pazienza di rispondermi.
 
La mia maschera oltre ad altro codice legato a pulsanti o aggiornamenti vari, ha eventi legati "all'apertura" e "su corrente".
 
1) Nel codice ho molti if then (per visualizzare si/no delle caselle di testo) che vorrei sostituire con case select, pensate ne valga la pena ? 
 
2) posso condizionare l'evento "su corrente" solo ad un pulsante o ad un evento ?
Senza questa condizione la maschera lavora molto più velocemente e potrei scegliere quindi se visualizzare o meno quella parte di dati.
 
3)considerando che la maschera visualizza sempre tutti i dati che devo vedere,
se la "spacchetto" in una struttura a schede, ne potrei ottenere giovamento ?
 
 
 
4)domanda ciliegina sulla torta e qui comprenderete la mia ignoranza....ho visto un pulsante di access per migrare a SQL server. Se volessi provare perdo i dati ?
Avrei bisogno di un nuovo programma o potrei rilavorare il tutto da access?
La domanda sembra banale e mi scuso per la mia ignoranza in merito.
 
grazie infinite a chiunque avrà la pazienza di rispondermi.

 grazie infinite a chiunque avrà la pazienza di rispondermi.
 
 
In definitiva è difficile darti dei consigli senza vedere il database e senza sapere cosa fa.
Comunque 15.000 record non sono poi così tanti, probabilmente qualche parte del codice è scritta male e si può ottimizzare.
Come prima cosa devi individuare quali sono i passaggi che portano via più tempo.
Metti nel codice una serie di linee
debug.print "Check 01 " & timer
...<istruzioni>...
debug.print "Check 02 " & timer
...<istruzioni>...
debug.print "Check 03 " & timer
 
poi apri il programma ed usalo un po', spostati su un paio di record.
Alla fine vai nell'editor VBA, apri la "Finestra immediata" e guarda cosa c'è. Troverai tutta una serie di 
Check 01 ....
Check 02 ....
con dei numeri a fianco.
I numeri sono presi dal timer, sono in secondi e decimi di secondo, quindi cerca i punti in cui la differenza tra due valori consecutivi del timer è più grande, quelli sono i punti in cui devi intervenire per ottimizzare il db.
Ciao.
-Marco-
 

Grazie infinite per le pazienti e esaurienti risposte.
un caro saluto.
 
 

 un caro saluto.
 
mmmm hai dei "totali" a piï¿œ di maschera? prova a toglierli...
 
-- 
------------
Pablitomf
Napoli sempre nel "Q"uore!
"mammasantissima" si nasce, non si diventa.
 
TheSpaceCowboy : 
Britos deve recuperare per arrivare in forma al prossimo
infortunio - 24/10/12
 

ciao Pablito, grazie per il contributo. 
 
Scriverò una banalità ma la mia maschera serve per visualizzare i record corrispondenti a interventi, consentendomi scorrendo di poterli visualizzare tutti.
 
Il tempo di apertura o di scorrimento fra record è diventato troppo lungo.
Ho iniziato a eliminare etichette e caselle di testo inutili (titoli o orpelli vari).
Sono alle prese con il codice che, nato da poche righe per poche esigenze è diventato, ovviamente per me che sono inesperto, e dopo mille nuove necessità, un gran casino.
La mia maschera ha ancora eventi su apertura e su evento che devo ottimizzare, sfruttando l'ottimo consiglio di Marco Pizzamiglio.
 
Ora vorrei provare a condizionare una sottomaschera ad un pulsante in modo tale che la maschera (spero...) diventi più veloce..
 
p.s. non ho totali di maschera ma ho di tutto e di più....
 
grazie e ciao un caro saluto.
 
 

 grazie e ciao un caro saluto.
 
mmmm... non è facile suggerirti qualche opzione di miglioria senza sapere come è
stato implementato il codice, come i dati, e come l'sql o i filtri...


 
proseguo con il mio tormentone....
Ho rivisto un pò di codice e ieri sera ero arrivato a scorrere i vari record con un tempo intercorrente, tra l'uno e l'altro, di circa 1 o 1,5 secondi.(prima era di circa una decina)
 
Premetto che siamo cinque mdb client collegati a un mdb server.
 
Stamane ho condiviso con i colleghi il file del nuovo client aggiornato, fiero e tronfio dell'ottimo lavoro sin qui sviluppato, aspettando (vanamente) i loro complimenti sul già ottimo risultato( grazie a voi).
 
morale della favola: nessuno dei colleghi ha riscontrato migliorie....anzi.
 
Considerando che continuo l'analisi dei tempi/codice con quanto suggeritomi da Marco, ho un dubbio persistente.
 
Il file mdb client ha una schermata di avvio dalla quale si accede alla maschera accusata di lentezza.
Se un collega o due, tengono aperto il client mdb sulla maschera iniziale senza utilizzarlo, in pratica iconizzato sulla barra, questo comportamento penalizza la velocita per gli altri tre sventurati o può essere trascurabile ?
Se cosi fosse pensavo a "staccare" il file dopo 30 minuti di inutilizzo dei colleghi "sbadati".
grazie ancora.