Selezione record in sottomaschera

di il
3 risposte

Selezione record in sottomaschera

Da una maschera contenente i campi: IDmatricola, IDdato, IDSRP, un evento attivato su click di IDmatricola apre la maschera [matricole] con origine dati da tabella contenente [ID matricola] chiave primaria. La maschera [matricole] contiene la sottomaschera [sottomaschera matricole dati], con origine dati da tabella contenente i campi [ID matricola], [ID dato], e con campi collegati [ID matricola].
Vorrei che sull’evento, fosse selezionato il record nella sottomaschera con [ID dato] = IDdato.
Ho scritto questo codice dopo ricerche in rete, che mi apre la maschera [matricole], mi attiva il primo record della sottomaschera, ma non quello con [ID dato] = IDdato.
Private Sub IDmatricola_Click()
Dim VarMatricola As Integer
Dim VarDato As Integer
Dim VarSRP As Integer
VarMatricola = Me.IDmatricola
VarDato = Me.IDdato
VarSRP = Me.IDSRP
[TempVars]![Lingua] = 78
DoCmd.OpenForm "matricole", acNormal, , "[ID matricola] = " & VarMatricola
Forms!Matricole![sottomaschera matricole dati].SetFocus
Dim rs As Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "[ID dato] = " & VarDato
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
rs.Close
End Sub
Il comando [TempVars]![Lingua] = 78 inserisce un filtro nelle tabelle origine dati.
Mi scuso se ho utilizzato degli spazi nei nomi degli oggetti. Ho imparato a mie spese che non è opportuno, oltre che leggendo i consigli degli utenti più esperti del forum. D’altra parte il database è stato creato quando ancora non avevo iniziato a studiare il VBA.

Un grazie e un caro saluto

3 Risposte

  • Re: Selezione record in sottomaschera

    Salve,
    non avendo collegato il campo IDdato devi filtrare la sottomaschera cosi :
    Dim criterio as string
    Criterio = "IdDato=" & me.iddato
    Forms!Matricole![sottomaschera matricole dati].form.filter=criterio
    Forms!Matricole![sottomaschera matricole dati].form.filterOn=True
    Non ho potuto fare una prova, vista l'ora probabilmente vuole anche il parametro [ID matricola] nel caso modifichi il criterio così
    Criterio ="[ID matricola]=" & me.[ID matricola] & "And IdDato=" & me.iddato
    A naso dovrebbe andare bene la prima, prova e ne parliamo
    Notte
  • Re: Selezione record in sottomaschera

    Buongiorno Gianni e grazie per il tuo intervento.
    La sottomaschera [sottomaschera matricole dati] contiene già dei dati correttamente filtrati (normalmente 8-10 records) perchè la tabella origine dati, che collega i campi [ID matricola], [ID dato] viene filtrata su [ID matricola]. Quello che mi serve non è filtrare su [ID dato] (cosa che ho verificato applicando il tuo codice), ma selezionare, tra tutti i record presenti in sottomaschera, quello con [ID dato] = IDdato.
  • Re: Selezione record in sottomaschera

    Ho trovato l'errore. Di seguito il codice corretto.
    Private Sub IDmatricola_Click()
    Dim VarMatricola As Integer
    Dim VarDato As Integer
    Dim VarSRP As Integer
    VarMatricola = Me.IDmatricola
    VarDato = Me.IDdato
    VarSRP = Me.IDSRP
    [TempVars]![Lingua] = 78
    DoCmd.OpenForm "matricole", acNormal, , "[ID matricola] = " & VarMatricola
    Dim rs As Recordset
    Set rs = Forms!Matricole![sottomaschera matricole dati].Form.RecordsetClone
    rs.FindFirst "[ID dato] = " & VarDato
    If Not rs.EOF Then Forms!Matricole![sottomaschera matricole dati].Form.Bookmark = rs.Bookmark
    rs.Close
    End Sub
    L'errore era nella definizione della sottomaschera che deve essere:
    Forms!Matricole![sottomaschera matricole dati].Form
    grazie e un saluto a tutti
Devi accedere o registrarti per scrivere nel forum
3 risposte