Ciclare e modificare un campo della tabella di una maschera di ricerca

di Anonimizzato18636 il
8 risposte
Ciao a Tutti,
vi pongo una problematica che per voi specialisti di access e programmazione sicuramente sarà banale.
Ho una maschera di ricerca in cui nell'intestazione della maschera ho i campi con cui effettuo il filtraggio e nel corpo mi vengono visualizzati i record frutto del filtraggio, ora ho la necessità attraverso VBA di dover modificare un determinato campo della tabella di ricerca per tutti i record.
Come faccio in VBA a poter ciclare tutti i record e modificare i valori di una determinata colonna?

Vi ringrazio per il tempo che mi avete dedicato.
Ciao

8 Risposte

  • Quindi non devi fare una ricerca...?
    Oppure devi modificare un campo in tutti i records che soddisfano la ricerca..?

    In questo secondo caso non devi ciclare nulla... fai una Query UPDATE con WHERE condition pescata dai filtri... poi fai il Requery della Maschera.
  • Per la ricerca sono ok ma il risultato finale esce fuori da una query che passo attraverso "Me.RecordSource" e un ulteriore filtraggio che passo attraverso "Me.Filter", ora se possibile vorrei ciclare i record che ho come risultante finale sulla mia maschera e al click su un pulsante modificate da false a true e viceversa tutti i record di una determinata colonna.
    Se non è possibile farlo procederò con la ricostruzione della query sulla base del "Me.RecordSource" + "Me.Filter".

    Ciao!
  • Se vuoi proprio ciclare puoi utilizzare il Me.RecordsetClone sfruttando i metodi movefirst e poi movenext ....
    Però, se segui il consiglio di Alex fai prima. Ti basta recupera il filtro (da Me.Filter) e scrivere la query di aggiornamento (se non sai la sintassi precisa cerca SQL UPDATE con google)
  • Possibile è possibile... così come è ovvio sia una scelta sbagliata.
    Quindi se è un compito di scuola va bene... ma altrimenti è una cavolata.

    La risposta l'ha già data Max...
  • Ciao,
    la mia era una query concatenata (spero che sia il termine giusto) e con join, quindi riutilizzando la query di ricerca e con l'utilizzo del recordset ho aggiornato i campi direttamente sul DB.

    Spero che tecnicamente sia il giusto compromesso.
    Ciao e grazie!
  • No assolutamente, ti abbiamo già detto qual'è quello giusto.
    Funziona ugualmente...? SI e se sei contento tu...
  • All'onchange del campo modificato chiama la query di aggiornamento, tipo
    se hai un
    docmd.RunSQL = "update tblCmpDaMod set tblCmpDaMod .CmpDaMod = " + me.CmpDaMod.value + " where tblCmpDaMod .id = " + me.id.value

    Senza clonare dati e occupare troppa memoria
Devi accedere o registrarti per scrivere nel forum
8 risposte