Velocizzare VBA Access

di il
10 risposte

Velocizzare VBA Access

Ciao,
Vi chiedo se ci sono trucchi per velocizzare le macro di Access come si fa in Excel.
Ad es in Excel uso queste righe di codice ad inizio e fine macro:
Application.ScreenUpdate=False/True
Application.EnableEvents=False/True
C'è qualcosa del genere anche in Access?
Versione 2010
Grazie
Ciao

10 Risposte

  • Re: Velocizzare VBA Access

    Non stai parlando di nulla concreto... Excel ed Access sono 2 cose concettualmebte diverse non banalizzabili con lo screenupdate.

    Il VBA di Access si può scrivere bene o male...
    Se hai esempi concreti possiamo guardarci, altrimenti l'argomento non ha precondizioni alla discussione.
  • Re: Velocizzare VBA Access

    Grazie della risposta.
    Il codice di excel era per esempio.
    Ho un pulsante su una maschera associato ad una macro vba.
    Come in excel ci sono tecniche per velicizzare la macro, chiedo se ci sono tecniche simili per access, ovvero righe di codice da mettere in cima ad ogni macro vba in modo che il resto della macro filtri e carichi i dati richiesti più velocemente.
    Ciao
  • Re: Velocizzare VBA Access

    Vorrei provare ad essere più esplicito dal momento che non hai capito.
    L'esempio che hai fatto sopperisce alla velocizzazione dovuta all'impatto che il REFRESH delle celle avrebbe in seguito all'esecuzione della MACRO, quindi si tratta di una condizione Specifica per come EXCEL lavora e per come presenta i dati.

    Quì parliamo di Access e non ha quel problema perchè lavora in modo completamente differente, ed ogni problema di eventuale rallentamento va analizzato specificatamente in relazione a come è stato scritto ed a cosa deve produrre.

    Non c'è la bacchetta magica... ma serve analizzare il codice.
    Le MACRO poi non si usano se si vuole capire cosa succede.
  • Re: Velocizzare VBA Access

    Il fatto che access rappresenti le informazioni in righe e colonne come fa Excel NON VOL DIRE che access ed excel funzionino in modo simile o facciano le stesse cose.

    e' un po come pensare che un treno ed un triciclo facciano le stesse cose solo perche' entrambi hanno le ruote.

    La somiglianza e SOLO SUPERFICIALE.
    Funzionamento e logiche interne sono TOTALMENTE DIVERSE.

    La rappresentazione a righe è colonne fa sì che entrambi forniscano un microscopico set di funzionalita' in comune.
    Ma e' MICROSCOPICO
  • Re: Velocizzare VBA Access

    Ciao.

    Più che velocizzare, in access o qualsiasi db si parla di e evitare rallentamenti.
    Esistono le regole di normalizzazione che dovrebbero essere usate ogni volta che si progetta un database. Evitare dati ridondanti, creare relazioni snelle tra le tabelle, creare query snelle, richiamare una parte di record invece che tutti quanti, scrivere codice vb ottimizzato, valutare se è meglio usare un filtro o una query. Anche la parte hardware ha poi la sua importanza. Alla fine access è come un postino che deve consegnare le lettere in un quartiere. Bisogna cercare di creargli il percorso più agile.
    Puoi di può discutere ad esempio se è più veloce una macro (che è diversa da quelle di access) rispetto ad un codice vb. Ma anche questo è relativo all azione che deve effettuare e potrebbe cambiare di volta in volta.
    Più che trucchi, quindi si parla di approccio alla creazione della struttura.
  • Re: Velocizzare VBA Access

    Premesso che sono d'accordo con i vari interventi in generale ... ma forse si riferiva solo ai rallentamenti dovuti a refresh/requery "grafici"
    nel caso è utile
    Me.Painting=true/false
  • Re: Velocizzare VBA Access

    muttley005 ha scritto:


    Premesso che sono d'accordo con i vari interventi in generale ... ma forse si riferiva solo ai rallentamenti dovuti a refresh/requery "grafici"
    nel caso è utile
    Me.Painting=true/false
    Non serve a nulla in termini di PRESTAZIONI se non in caso di Controlli con ControlSource Calcolato, ma solo per evitare di vedere Flickering di grafica.
    Tieni poi presente che se si usa quella possibilità, è indispensabile una robusta gestione errori per evitare il Freezing della Form con conseguente inibizione ai comandi...
  • Re: Velocizzare VBA Access

    @Alex ha scritto:


    muttley005 ha scritto:


    Premesso che sono d'accordo con i vari interventi in generale ... ma forse si riferiva solo ai rallentamenti dovuti a refresh/requery "grafici"
    nel caso è utile
    Me.Painting=true/false
    Non serve a nulla in termini di PRESTAZIONI se non in caso di Controlli con ControlSource Calcolato, ma solo per evitare di vedere Flickering di grafica.
    si, in realtà intendevo quello, leggendo il suo primo post mi sembrava potesse riferirsi a quello
    però sinceramente mi sembra che su alcune operazioni, tipo lo scorrimento via codice di records di un ADODB assegnato runtime anche ad un listbox, l'uso del painting=false renda + veloce ... no? è solo un'impressione? bisognerebbe provare
  • Re: Velocizzare VBA Access

    muttley005 ha scritto:


    ...
    si, in realtà intendevo quello, leggendo il suo primo post mi sembrava potesse riferirsi a quello
    però sinceramente mi sembra che su alcune operazioni, tipo lo scorrimento via codice di records di un ADODB assegnato runtime anche ad un listbox, l'uso del painting=false renda + veloce ... no? è solo un'impressione? bisognerebbe provare
    Non capisco di cosa stai parlando...
    Se parliamo di maschera Continua e metti Painting=False per scorrere i Records... non vedi nulla e su che evento la faresti la gestione(True/False)... il MouseWheel temo non vada bene e qualsiasi altro non capisco proprio...
    Se parliamo di maschera Singola, beh non ci trovo senso... e Current non andrebbe bene... andrebbe rilavato il cambio PK e temporizzato il rientro... mah...

    Boh... francamente ho molte perplessità, hai fatto qualche prova o era solo buttata li...?
  • Re: Velocizzare VBA Access

    @Alex ha scritto:


    ...
    Boh... francamente ho molte perplessità, hai fatto qualche prova o era solo buttata li...?
    Sono in ferie e non ho con me il portatile con cui poter fare prove ma andando a memoria sono certo che il Flickering di grafica, oltre che essere brutto da vedere, rallenti anche l'esecuzione per cui a quello mi riferivo.
    Se non mi tradisce la memoria, appunto come ho scritto nel post precedente, se si ha una listbox associata a runtime ad un ADODB e quest'ultimo viene ciclato il painting ha la sua importanza in fatto di prestazioni ...
    ma se tu dici che non è così avrai ragione e mi ricordo male.

    Rimane che se ugoldrake desse un qualche riscontro ...
Devi accedere o registrarti per scrivere nel forum
10 risposte