Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    93

    [VBA] Ottimizzazione codice Access

    Avrei bisogno di un aiuto per verificare se questo codice è ottimizzato. Da poco ho iniziato a scrivere codice per acceess e non vorrei aver dimenticato qualcosa di importante.
    Devo elaborare un tabulato che stampa il campo solo "a rottura di codice"
    in pratica devo riempire un campo di una tabella che è solo parzialmente compilato prendendo i dati dai record che stanno sopra, spero si capisca. Funzionare funziona ma sono circa 200.000 record e questa parte è un po lenta.

    codice:
     
    
    Dim db As Database
    Dim rst As Recordset
    Set db = CurrentDb
    Set rst = db.OpenRecordset("T_tabella")
    rst.MoveFirst
    V_campo = "Vuoto"
    Do While Not rst.EOF
       If rst![F_campo] <> "" Then
          V_campo = rst![F_campo]
       Else
          rst.Edit
          rst![F_campo] = V_campo
          rst.Update
       End If
       rst.MoveNext
    Loop
    rst.Close            
    Set rst = Nothing 
    Set db = Nothing

    secondo voi si può fare quacosa ?

    grazie

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Spiega meglio perchè non è chiarissimo...

    Sicuramente eseguire la scansione di 200.000 righe non è assolutamente il modo migliore, probabilmente basterebbe una semplice query fatta 'ad hoc' del tipo:

    UPDATE tabella SET campo = valore WHERE condizioni

    ma ovviamente bisogna conoscere alcuni dettagli sulle tabelle e campi interessati per scrivere la query correttamente.


  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    93
    Ma le ho pesate tutte ma non mi è venuta in mente un altra soluzione.
    Immagina un tabulato di una lista di materiali diviso per cliente

    cod descr
    01 pippo
    02 viti
    02 pennelli
    02 vernici
    01 pluto
    02 matite
    02 penne

    il risultato finale deve essere
    cliente cod descr
    pippo 01 pippo
    pippo 02 viti
    pippo 02 pennelli
    pippo 02 vernici
    ecc.

    ho fatto una query di aggioramento di cliente con descr per cod = 01
    e poi lanciato il codice sopra che ricopia il clente anche nei record con cod = 02; quando trova il codice 01 aggiorna il cliente.
    E poi cancella record per cod = 01

    Il mio dubbio, non avendo mai scritto codice per access era se esistessero delle dichiarazioni di recordset che velocizzano la lettura e la scrittura della tabella

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.