Tag maschera chiusa

di il
2 risposte

Tag maschera chiusa

Ciao a tutti, ho un problema nel passaggio di valori tra due maschere.

Nella prima maschera ho un bottone che fa eseguire una ricerca su un campo. Il campo può contenere più volte lo stesso valore, quindi l'utente può continuare o interrompere la ricerca. Potrei usare una msgbox, ma mi appare in un punto fastidioso e mi copre proprio il campo di ricerca.

Quindi ho risolto chiamando una maschera modale con due bottoni e devo intercettare quale bottone è stato premuto.

Quando si preme il bottone di ricerca, il codice interrompe il loop, apre la seconda maschera e chiede all'utente se proseguire o meno la ricerca. In caso positivo, deve chiudere la maschera e riprendere il loop; in caso negativo, deve fermarsi su quel record e uscire dal loop.

Non riesco a capire dove sbaglio, allego il codice di entrambe le maschere.

Form “madre” (Ruoli 2023):

Private Sub CercaRuolo_Click()
   Dim valoreRicerca As Variant
   
   valoreRicerca = InputBox("Ruolo da cercare:", , , 8000, 6000)
   If valoreRicerca <> "" Then
       ' Salva la posizione corrente nel recordset
       Dim posizioneCorrente As Variant
       posizioneCorrente = Me.CurrentRecord
       ' Cerca il record con il criterio specifico
       If Me.RecordsetClone.RecordCount > 0 Then
           Me.RecordsetClone.FindFirst "Ruolo LIKE '*" & valoreRicerca & "*'"
           Do While Not Me.RecordsetClone.NoMatch
           
               ' Verifica se il record trovato è quello giusto
               Me.bookmark = Me.RecordsetClone.bookmark
               
               ' Visualizza la tua form personalizzata
               DoCmd.OpenForm "ContinuaRicerca", , , , , acDialog
               ' Verifica la risposta dall'utente
               CheHaDetto = Forms("ContinuaRicerca").Tag
               
                   'DoCmd.Close acForm, "ContinuaRicerca"
                   
              If CheHaDetto = "NO" Then
                   ' L'utente ha trovato il record che cercava, esci dal loop
                   Exit Do
               Else
                   ' Prova a trovare il successivo
                   Me.RecordsetClone.FindNext "Ruolo LIKE '*" & valoreRicerca & "*'"
               End If
           Loop
           If Me.RecordsetClone.NoMatch Then
               ' Nessun record trovato o confermato, ripristina la posizione corrente
               MsgBox "Nessun record trovato o confermato."
               DoCmd.GoToRecord , , acGoTo, posizioneCorrente
           End If
       End If
   End If
   
End Sub

Form “figlia” (ContinuaRicerca):

Private Sub btnSi_Click()
   ' Imposta il tag della form su "SI"
   
   Me.Forms.Tag = "SI"
   
   ' Chiudi la form "ContinuaRicerca"
   DoCmd.Close acForm, Me.Name
End Sub
Private Sub btnNo_Click()
   ' Imposta il tag della form su "NO"
   
   Me.Forms.Tag = "NO"
   
   ' Chiudi la form "ContinuaRicerca"
   DoCmd.Close acForm, Me.Name
End Sub

Qualcuno può aiutarmi?

Grazie in anticipo!

2 Risposte

  • Re: Tag maschera chiusa

    Quel codice temo non possa funzionare come dici, sempre io non abbia frainteso…

    Finché la maschera modale non viene chiusa o resa NON VISIBILE è impossibile che ul codice prosegua… quindi quando dici “in caso negativo”… non torni più indietro …

    Ti ho suggerito NON VISIBILE proprio perchè rappresenta un possibile escamotage… 

    Personalmente però approccerei in modo diverso, ovvero popolare una ListBox con i risultati della ricerca usando il filter sul recordsetclone e passandolo come Recordset alla Listbox, poi fa li puoi far aprire la Form sul DoppioClick della listbox…

  • Re: Tag maschera chiusa

    Trovato altra soluzione: sposto la maschera principale e mi uso la msgbox… faccio prima :)

    Grazie!

Devi accedere o registrarti per scrivere nel forum
2 risposte