Pubblicato il 21 Settembre 2020 da Maurizio Matetich
L’istruzione Do While – Loop permette di eseguire ripetutamente alcune istruzioni. Le istruzioni vengono eseguite finchè una condizione non risulta vera.
L’istruzione Do While – Loop è utilizzata quando si vogliono analizzare i record delle tabelle di un database Access
Il formato generico è:
Do While (condizione)
istruzioni da eseguire ripetutamente
Loop
Per fare riferimento ad una tabella possiamo utilizzare la variabile rs (che significa RecordSet) e le varie istruzioni collegate.
Chiariamo tutto con un semplice esempio.
Ho una tabella Vendite che contiene i campi Codice, Quantità, PrezzoUnitario e PrezzoTotale.
Voglio calcolare il prezzo totale per ogni articolo e voglio scrivere il valore nel campo corrispondente. Nel nostro esempio i record sono solo 3 e quindi potrei fare tutto manualmente. Ma se i record fossero 1000 oppure 10.000?
Vediamo come risolvere il problema in modo semplice e veloce.
Per prima cosa devo collegarmi con la tabella Vendite e posizionarmi sul primo record:
Dim rs1 As DAO.Recordset
‘da utilizzare nel caso di tabella locale
Set rs1 = CurrentDb.OpenRecordset(“Vendite”, dbOpenTable)
rs1.MoveFirst
a questo punto dobbiamo trovare la condizione da utilizzare nell’istruzione While.
Dobbiamo specificare che vogliamo calcolare il prezzo totale per tutti i record e quindi vogliamo scorrere tutti i record fino all’ultimo.
Si utilizza l’istruzione Not rs1.EOF per indicare “finché non siamo alla fine del file” Infatti EOF vuol dire End of File.
Do While Not rs1.EOF
rs1.Edit
rs1.Fields(“PrezzoTotale”) = rs1.Fields(“Quantita”) * rs1.Fields(“PrezzoUnitario”)
rs1.Update
rs1.MoveNext
Loop
MsgBox “Prezzi totali calcolati”
rs1.Close
Set rs1 = Nothing
Il risultato finale in tabella sarà:
Conclusione:
abbiamo visto che l’istruzione Do While Loop permette, in modo semplice, di scorrere tutto l’elenco dei record di una tabella e per ogni record è possibile modificare un campo.
In alcuni caso è possibile ottenere lo stesso risultato con una query di aggiornamento. Ma non sempre 🙂
Scrivi un commento