Ritornare allo stesso record in una maschera dopo requery

Anonimo
2015-02-24T05:18:08+00:00

Ciao a tutti

sto cercando una soluzione per tornare allo stesso record dopo la requery di Maschera1.

una piccola descrizione :

ho due maschere Maschera1 e MasZoom  con lo stessa origine. cliccando su casella di testo nella maschera1  apro MscZoom, alla chiusura della MscZoom ho 

Routine evento: 

Private Sub Form_Close()

 Form_Maschera1.Requery

End Sub

tutto si aggiorna pero torna al primo record, come potrei fare per rimanere su lo stesso record e campo nella Maschera1 sia aggiornato?

Grazie anticipatamente

Vladi

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-02-24T21:39:53+00:00

Private Sub Form_Close()

   Dim lngStore As Long

     lngStore = Form_Maschera1.ID

     'riduce lo sfarfallio dello schermo

    Form_Maschera1.Painting = False

   Form_Maschera1.Requery

  Me.Recordset.FindFirst "ID= " & lngStore

Form_Maschera1.Painting = True

End Sub

Tu dall'esempio di Karl hai correttamente sostituito tutti i Me.   con  Form_Maschera1

perché solo nel caso del RecordSet hai lasciato 

...... Me.Recordset.FindFirst "ID= " & lngStore  ????????

tu devi cercare nel recordSet di Maschera1 non di MasZoom

poi l'errore 94 te lo da quando vai al Nuovo record perché

in quel momento non hai ancora il numeri di Id

potresti risolvere con una if che se il valore di Id è Null

allora va semplicemente all'ultimo record

' --- [code] ------------------------------------------------

Private Sub Form_Close()

Dim lngStore As Variant

' ho messo Variant perche nel caso di nuovo record ID è ancora Null

lngStore = Form_Maschera1.ID

'riduce lo sfarfallio dello schermo

Form_Maschera1.Painting = False

Form_Maschera1.Requery

    If Nz(lngStore, "") = "" Then   ' verifico se lngStore è Null

        'se è null vado all'ultimo record e finisce li

        DoCmd.GoToRecord , "", acLast

    Else

        ' se non è null allora cerco nel RecordSet

        ' tu qui avevi    Me.Recordset.FindFirst "ID= " & lngStore

        Form_Maschera1.Recordset.FindFirst "ID= " & lngStore

    End If

Form_Maschera1.Painting = True

End Sub

'----- [/code] ---------------------------------------

3 domande .........

ma hai notato cosa succede quando dopo avere modificato un valore in

MasZoom premi il pulsante di avanzamento di Maschera1

invece che il pulsante di chiusura di MasZoom ????

Perché vuoi fare il requery,   io lo ho testato senza nessun requery e mi

aggiorna tranquillamente la visualizzazione di Maschera1 ?????

Ma forse ci hai postato un estratto

hai provato con il Recalc ??? che di suo non manda al 1° record ??

Private Sub Form_Close()

    Form_Maschera1.Recalc

End Sub

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-02-24T07:52:08+00:00

Ciao Vladi,

Vedi http://www.donkarl.com/it/   Sez. Maschere FAQ 4.6

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-02-25T02:15:46+00:00

    Ciao Mancini

    si qui -  Me.Recordset.FindFirst "ID= " & lngStore ho fato un errore, grazie per la tua attenzione, e grazie1000 per la tua risposta e per la seconda parte di codice:

    If Nz(lngStore, "") = "" Then  

     DoCmd.GoToRecord , "", acLast

    Else

     Form_Maschera1.Recordset.FindFirst "ID= " & lngStore

    End If

    adesso funziona si, tutto OK, proprio quello che cercavo di fare.

    con recalc e refresh non funzionava.

    pulsanti di avanzamento li ho cambiato con una cbo di ricerca

    vedi qui esempio:

    http://1drv.ms/1Dne9u7

    GRAZIE MILLE MANCINI un Grande saluto

    Ciao Vladi

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-02-24T20:39:42+00:00

    Ciao Cinzia

    prima di tutto di ringrazio per la tua disponibilità, e per la risposta.

    su link che hai suggerito ho trovato questo codice:

    Lo stesso record dopo un Requery:

    Dim lngStore As Long

    lngStore = Me!Id

    'riduce lo sfarfallio dello schermo

    Me.Painting = False

    Me.Requery

    Me.Recordset.FindFirst "Id = " & lngStore

    Me.Painting = True

    che nel mio caso  impostato su chiusura maschera e:

    Private Sub Form_Close()

       Dim lngStore As Long

         lngStore = Form_Maschera1.ID

         'riduce lo sfarfallio dello schermo

        Form_Maschera1.Painting = False

       Form_Maschera1.Requery

      Me.Recordset.FindFirst "ID= " & lngStore

    Form_Maschera1.Painting = True

    End Sub

    ma non funziona su record precedente torna sempre su primo record 

    quando vado su nuovo alla chiusura della MscZoom mi da errore '94'

    per Spiegarmi meglio vedi:

    http://1drv.ms/1zE8tbw 

    Ciao Vladi

    La risposta è stata utile?

    0 commenti Nessun commento