Newsgroup: it.comp.appl.access
Titolo: Ho un problema con il VBA

ho una tabella con due campi: STATO (testo da un elenco di valori) e
DATA (una data inserita in una maschera). Mi occorre un codice in VBA
(penso che sia la ascelta migliore) che mi consenta di cambiare la
data (chiedendola all'utente) in tutti i record che contengono in
STATO un determinato testo.
Unico problema: NON SO UN TUBO DI VBA!!! O meglio: non so niente di
come gestire i record da vba: un ciclo for? il record di una tabella
in vba è un array? 
io penso che si debba fare qualcosa del tipo: for 1 to ultimo_record
if STATO=xxx allora DATA=yyy; next
Sto sbagliando???
Grazie milla
' c e l l o
icq #27222846
marc...@tamburini.net

 ha scritto nel messaggio
news:396f1e4d...@news.libero.it...

Visto che mi sembra di capire che preferisci non adoperare il VBA, perché
non adoperi una query di modifica??
Roberto


Ne sari felice, per questioni di tempo, ma ignoro come si faccia. Se
mi dai una mano sei un bravo ragazzo.



Per prima cosa creati una query di selezione, ovvero come se i record che
devi modificare li dovessi solo vedere; naturalmente il campo da modificare
deve essere contenuto nella query.
Verificato che la query di selezione funziona, aprila in modalità struttura;
dal menu Query o dal pulsante Tipo query della barra degli strumenti
seleziona il comando "Query di aggiornamento". Così facendo hai convertito
la tua query da query di selezione a query di aggiornamento; Access aggiunge
una riga alla struttura della query e la chiama "Aggiorna a:".
In questa riga, nella colonna relativa al campo da aggiornare, inserisci il
nuovo valore che il campo deve assumere dopo l'esecuzione della query di
aggiornamento.
Visto che mi sembra di capire che modificherai una data, ti ricordo che una
costante data va chiusa tra cancelletti (#).
Quando eseguirai la query di aggiornamento, Access, prima di effettuare le
modifiche, ti chiederà conferma dopo averti informato di quanti record sta
per modificare (dovranno essere tanti quanti ne riuscivi a vedere quando la
query era ancora una query di selezione).
Per eseguire una query di aggiornamento puoi farlo da VBA (che mi sembra di
capire non sia il tuo caso), da macro, aprendola dalla finestra Database
dopo averla selezionata, premendo il pulsante "Esegui" della barra degli
strumenti mentre è aperta la struttura della query, selezionando il comando
"Esegui" del menu Query mentre è aperta la struttura della query.
Sperando di aver fatto il bravo ragazzo (anche se ormai sono un ragazzo
cresciutello), ti saluto
Roberto

in vba è un array? 
si usa un recordset.  vedi l'help per dettagli, comunque un recordset
e' qualcosa che punta ai record di una tabella o query.  per mezzo di
un recordset ti sposti da record a record, modifichi ilcontenuto dei
campi, aggiungi e cancelli record.  non sempre i recordset sono il
modo migliore di lavorare sui dati.  nel tuo caso e' sicuramente piu'
efficiente una query di aggiornamento.
tipicamente si scorre un recordset in questo modo (diamo per scontato
che il recordset punti al primo record):
' comincia un ciclo do..loop che interromperai
' quando rst.eof vale true.  vedi sull'help cos'e'
' eof (in due parole e' qualcosa che ti dice che sei
' alla fine del recordset).
do until rst.eof
	' "sblocca" il recordset
	rst.edit
	' assegna valore a Campo per il record
	' corrente
	rst!Campo=valore
	' "salva"
	rst.update
	' vai al record successivo
	rst.movenext
loop
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/



Al tempo!! :-) quando ci sarò riuscito farai il bravo ragazzo! Grazie
mille.
