28/03/2024 - Giuseppe85 ha scritto:
Private Sub CalcolaDistanza_Click()
==============
Vorrei creare un pulsante che si occupi di cliccare tutti i pulsanti della maschera.
Ciao,
è una cosa brutta brutta brutta da fare … però per fare si può fare ;-)
Per esempio se hai una Form impostata in visualizzazione a Maschere Continue, potresti fare una cosa di questo tipo:
' ALL CLICK COMMAND
Private Sub CmdAllClick_Click()
' set cursor
DoCmd.Hourglass True
' refresh disable
Me.Painting = False
' set recordset clone
Dim rsClone As Recordset
Set rsClone = Me.RecordsetClone
' set recordset form
Dim rsFrm As Recordset
Set rsFrm = Me.Recordset
' retrieve total records
Dim intTotalRec As Integer
intTotalRec = rsClone.RecordCount
' move first record
rsClone.MoveFirst
' read recordset
Do Until rsClone.EOF
' set current record form
rsFrm.Bookmark = rsClone.Bookmark
' start your process
CalcolaDistanza_Click
' move next record
rsClone.MoveNext
Loop
' close
rsClone.Close
Set rsClone = Nothing
' refresh enable
Me.Painting = True
' set record form
rsFrm.MoveFirst
' set cursor
DoCmd.Hourglass False
' completed message
MsgBox "Process completed - records: " & intTotalRec, vbInformation, "Info"
End Sub
Questa routine la metti nel codice della form.
Il Pulsante per avviare il ciclo di "all click" si chiama per esempio CmdAllClick_Click(), quindi metti il codice sotto il tuo pulsante.
In pratica si prende il recordset clone della form e si scorre dal primo all'ultimo records.
Nel ciclo si sposta il puntatore anche nella form per essere sicuri di leggere il record corretto, come accade quando premi il pulsante sulla singola riga, e si avvia il comando CalcolaDistanza_Click
A fine lettura si imposta la form al primo records e ti avverte quando ha finito di processare tutto con un messaggio di fine elaborazione.
Nel fare questo ciclo di lettura e invio comando, si sospende il paint della form e si ripristina a fine lettura. Questo consente di non perdere tempo nel vedere i records che scorrono nella form, ecc.ecc…
Naturalmente è un esempio, devi testarlo e verificare i risultati, modificarlo per eventuali controlli, eccc.eccc…
Fai una copia del database e agisci prima in nella copia e poi quando hai completato le tue implementazioni e test, allora lo metti nel definitivo.
Ripeto, è una brutta cosa da fare e su 16.000 records vedrai che ci metterà un po' ad eseguire tutto il ciclo di lettura.
Io non lo farei !!! … come ti hanno già suggerito andrebbero prese strade ben diverse con un approccio assai migliore.
Vedi te…
Ciaoooo ;-)