Sincronizzare una sottomaschera

di il
63 risposte

Sincronizzare una sottomaschera

Buongiorno!

Da una maschera singola (A) dove visualizzo i dati anagrafici degli utenti, apro un'altra maschera singola (B, a cui passo l'ID utente) che contiene:
1) una sottomaschera a maschere multiple con l'elenco degli utenti
2) un'altra sottomaschera con le attività in cui sono impegnati
3) il campo note dove sono scritte le informazioni di ciascuno

Ora avrei bisogno che la prima sottomaschera, all'apertura di B, mi evidenziasse l'utente che avevo in A.
Mi sapete dare un aiuto?
Grazie, Francesco

63 Risposte

  • Re: Sincronizzare una sottomaschera

    Evidenziasse cosa intendi...?
    Deve diventare il Record Attivo, deve essere Colorato in evidenza...?
    Per il primo, devi usare il codice per puntare al Record con Id=IdUtente, per questo si usa il metodo findFirst del Recordsetclone di Maschera(la sottomaschera è a sua volta una Maschera), quindi allineare il Bookmark di Maschera al Bookmark del RecordsetClone.
    Per il secondo puoi/devi usare la Formattazione Consizionale, inserendo come Metodo Espressione e criterio IdUtente=Forms!NomeFormB!IdUtente
  • Re: Sincronizzare una sottomaschera

    Allora... ho iniziato con la colorazione: sono andato sul campo della sottomaschera e nella FC ho inserito l'espressione come da te suggerito ma niente..
  • Re: Sincronizzare una sottomaschera

    Francesco Salvagnini ha scritto:


    Allora... ho iniziato con la colorazione: sono andato sul campo della sottomaschera e nella FC ho inserito l'espressione come da te suggerito ma niente..
    Devi aver sbagliato qualche cosa... che dici...? devi usare i Nomi corretti... ed il Generatore di espressioni ti aiuta a cercarli senza scriverli manualmente.
    Lavoraci sopra, perchè è la soluzione ma operativamente devi trovare tu la sintassi giusta.
  • Re: Sincronizzare una sottomaschera

    Hai ragione: ci mancavano le parentesi quadre... tra l'altro ho visto che nella FC si possono usare anche le TempVars. Ora però, mi colora il campo giusto, ma il cursore è posizionato sul primo della lista. Dev'essere il discorso dell'attivazione del record, vero? Ecco, su quello ho grossi problemi, perché non so né dove mettere il metodo FindFirst del RecordsetClone né come usarlo... si tratta di un ciclo VB? Mi potreste postare un esempio?
  • Re: Sincronizzare una sottomaschera

    Ho trovato questo esempio:

    With Me
    If Len(.Filter) > 0 Then
    .Filter = vbNullString
    .FilterOn = False
    End If
    End With

    With Me.RecordsetClone
    .FindFirst "ID=" & Me.IDUTENTE.ItemData(Me.IDUTENTE.ListIndex)
    If Not .NoMatch Then
    Me.Bookmark = .Bookmark
    End If '
    End With

    ma non so se faccia al caso mio (cioè della prima sottomaschera) e nemmeno so dove posizionarlo (es: "Su corrente" di della sottomaschera? Su click del campo della sottomaschera?)

    Grazie, Francesco
  • Re: Sincronizzare una sottomaschera

    La prima parte del filtro non serve se la sottomaschera è filtrata evidentemente è possibile farlo e sbagliato rimuoverlo in quel modo.

    Su load della maschera principale la parte di ricerca e spostamento bookmark.
  • Re: Sincronizzare una sottomaschera

    Premesso che meno cose scrivo meglio è, sono felicissimo di poter togliere la prima parte.
    Per quanto riguarda la seconda, sono perplesso su come modificare la seconda riga:

    .FindFirst "ID=" & Me.IDUTENTE.ItemData(Me.IDUTENTE.ListIndex)

    nel senso:
    1) IDUTENTE con cosa lo sostisuisco? Con il campo ID della sottomaschera?
    2) il .ItemData e il .ListIndex vanno bene? (Access mi dà: "Impossibile trovare il metodo o il membro dei dati)

    Se riesco posto la struttura di maschera e sottomaschera, ma non so se riesco a inserire l'immagine...

    [img]C:\Users\Francesco\Desktop\Immagine1.png[/img]
  • Re: Sincronizzare una sottomaschera

    Ehmm, no, evidentemente non so come postare gli stamp...
  • Re: Sincronizzare una sottomaschera

    Non ho considerato il contenuto del codice in quanto devi comprenderlo ed adattarlo alla tua situazione concreta che noi non conosciamo...
    Tu hai una listbox ad esempio...?
    Quel codice agisce non su una subform ma sulla form... e non è il tuo caso...
    Con le dovute riflessioni ed adattamenti CHE DEVI capire come effettuare per adeguarlo al tuo scenario:
    
    With Me.NimeSubform.form.RecordsetClone
    .FindFirst "IDUtente=" & Me.IdUtente
    If Not .NoMatch Then
    Me.Bookmark = .Bookmark
    End If '
    End With 
    
  • Re: Sincronizzare una sottomaschera

    Su
    Me.Bookmark = .Bookmark
    si ferma e mi dice: "Segnalibro non valido"... : (
  • Re: Sincronizzare una sottomaschera

    E sì che mi sembra di aver inserito i nomi giusti:

    With Me.NOME_DELLA_SOTTOMASCHERA.form.RecordsetClone
    .FindFirst "CAMPO_ID_DELLA_SOTTOMASCHERA=" & Me.CAMPO_ID_DELLA_SOTTOMASCHERA
    If Not .NoMatch Then
    Me.Bookmark = .Bookmark
    End If
    End With
  • Re: Sincronizzare una sottomaschera

    Mi era scappato un pezzo... e questo ti dovrebbe far capire che se non ci ragioni e lo capisci... ti fermi alla prima banalità...

    Me.Nomeform.Form.Bookmark=.Bookmark

    Vuoi dire che hai una sottomaschera che si chiama NOME_DELLA_SOTTOMASCHERA...?
    Ed un campo che si chiama CAMPO_ID_DELLA_SOTTOMASCHERA...?
  • Re: Sincronizzare una sottomaschera

    Adesso funziona!
    Certo che la sottomaschera NON si chiama NOME_DELLA_SOTTOMASCHERA e il campo CAMPO_ID_DELLA_SOTTOMASCHERA.
    Ma perché? Esistono maschere che si chiamano: NimeSubform? ; )
    Quindi grazie mille per l'aiuto, ma, come dici tu, bisognerebbe capire quelle 5 righe di codice... allora sarebbe un grazzissime!!!! : )
    Nel senso di scrivere un commentino nelle righe più importanti:

    With Me.NOME_DELLA_SOTTOMASCHERA.form.RecordsetClone ' Commento
    .FindFirst "CAMPO_ID_DELLA_SOTTOMASCHERA=" & Me.CAMPO_ID_DELLA_SOTTOMASCHERA ' Commento
    If Not .NoMatch Then ' Commento
    Me.NOME_DELLA_SOTTOMASCHERA.Form.Bookmark=.Bookmark ' Commento
    End If
    End With

    Però mi rendo conto di chiedere troppo...
  • Re: Sincronizzare una sottomaschera

    E comunque c'è un altro piccolo intoppo: quando seleziono un altro record, il campo evidenziato rimane quello dell'apertura della maschera, a meno che al click sul campo che deve colorarsi non ci metta Me.Refresh. Ma con il Me. Rfresh succede che l'attivazione torna a essere sul primo record della sottomaschera. Quindi record selezionato colorato, ma il "cursore" è sul primo record... forse bisogna usare il metodo FindFirst dopo il Me.Refresh? Ma allora come cambia il codice se lo metto al click del campo della sottomaschera?
Devi accedere o registrarti per scrivere nel forum
63 risposte