Forms

3.32 Spostarsi all'interno di una sottomaschera in modalità maschere continue.
  Antonio Biso
Supponiamo che invece di adottare una soluzione con una maschera principale a maschere continue, si utilizzi una sottomaschera a maschere continue.
Supponiamo che ci si voglia spostare su un particolare record della sottomaschera.
Questo potrebbe essere utile quando uno deve validare i dati inseriti nella sottomaschera e, qualora ci sia un'anomalia in uno dei record, si voglia evidenziare proprio quello all'utente, spostandocisi sopra.

La prima attività da fare è individuare l'anomalia (se c'è) e il numero di record incriminato. Si può fare così (righe è il nome del controllo sottomaschera)
Public Function cerca_anomalia() As Long
   Dim rst As Recordset
   Dim cont As Long

   Set rst = Me!righe.Form.RecordsetClone
   rst.MoveFirst
   cont = 1
   Do Until rst.EOF
      If controllo(rst) = "Errore!" Then
         MsgBox "E' presente l'anomalia ??? sul record evidenziato"
         cerca_anomalia = cont
         Exit Function
      End If
      rst.MoveNext
      cont = cont + 1
   Loop
   cerca_anomalia = 0
End Function
Nel clic del pulsante di validazione si chiamerà la funzione e se non restituisce zero si segnalerà l'errore spostandosi.
Private Sub Valida_Click()
   Dim num_record As Long
   '....
   num_record = cerca_anomalia
   If num_record = 0 Then
      MsgBox "Dati validati"
      Valida_Salva_Esci
   Else
      righe.SetFocus
      righe.Form.RecordsetClone.MoveFirst
      righe.Form.RecordsetClone.Move num_record - 1
      righe.Form.Bookmark = righe.Form.RecordsetClone.Bookmark
   End If
End Sub
Et voilà


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.