Aggiornamento maschera e sottomaschera

Anonimo
2019-04-26T04:53:20+00:00

Buongiorno a tutti,

In un DB di MS Access (uso la versione 2010, ma il file è in formato .mdb, quindi penso fatto con una versione precedente) ho una maschera che mi visualizza diversi dati (Maschera "Visualizza"), tra cui una sottomaschera. Tutti i campi sono bloccati perché è una maschera che deve permettere unicamente la visualizzazione.

Mediante un tasto che ho chiamato "modifica" si apre una maschera di modifica (Maschera "Modifica") all'interno della quale è possibile modificare alcuni campi, compresi quelli della sottomaschera. La maschera "Visualizza" rimane aperta in background.

Vorrei ora fare in modo che la maschera "Visualizza" si aggiorni, compresi i dati nella sottomaschera, non appena si chiude la maschera "Modifica".

È possibile? Come posso fare?

È meglio lavorare con le Macro oppure inserire direttamente un codice nelle proprietà (codice integrato)?

Grazie per un vostro aiuto.

David

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

4 risposte

Ordina per: Più utili
  1. Anonimo
    2019-05-04T18:15:08+00:00

    Grazie Sandro,

    Nei prossimi giorni, appena potrò, proverò la soluzione proposta.

    Cordiali saluti.

    Ciao. David

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-04-28T08:26:19+00:00

    ciao David,

    ti ho preparato una demo al volo QUI,  scaricala.

    In sostanza il codice associato al commandButton cmdModifica, ti consente di modificare al volo il recordsetType, di modificare la caption del command Button ( in modo da capire in quale modalità ti trovi) e di ri-sincroninzzare il bookmark del recorsetClone con il recordeset post click :

    Option Compare Database

    Option Explicit

    Private bool As Boolean

    Private Sub cmdModifica_Click()

    On Error GoTo errHandler

    Dim strCaption As String

    Dim strMessage As String

    Dim lngRecType As Byte

    Dim lngPK      As Long

    strCaption = "Salva"

    strMessage = "Modifica Abilitata"

    lngRecType = 0

    bool = Not bool

    If Not bool Then

        strCaption = "Modifica"

        lngRecType = 2

        strMessage = "Modifica NON Abilitata"

    End If

    VBA.MsgBox prompt:=strMessage, _

            buttons:=vbInformation, _

            title:="Avviso"

        With Me

            lngPK = .IDCategoria

            .cmdModifica.Caption = strCaption

            .RecordsetType = lngRecType                            ' modifico il recordsetTtype della main form

            .Prodotti.Form.RecordsetType = lngRecType    ' modifico il recordsetTtype della Subform

            .RecordsetClone.FindFirst "IDCategoria=" & lngPK   ' salvo la pk e di seguito risicronizzo il bookMark tra recordsetClone e recordset

            If Not .RecordsetClone.NoMatch Then

                .Bookmark = .RecordsetClone.Bookmark

            End If

        End With

    ExitErrorHandler:

        Exit Sub

    errHandler:

      With Err

            VBA.MsgBox "ERR#" & .Number _

                 & vbNewLine & .Description _

                 , vbOKOnly Or vbCritical

      End With

      Resume ExitErrorHandler

    End Sub

    HTH.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-04-28T06:08:13+00:00

    Grazie Sandro.

    in effetti mi aspettavo l’osservazione circa le 2 maschere.

    È la soluzione più semplice e rapida che qualche tempo fa ero riuscito ad applicare 🤪.

    Come potrei fare in alternativa? Praticamente vorrei che la modifica si abilitasse solo pressione di un pulsante.

    grazie mille.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-04-26T07:11:41+00:00

    ciao David,

    non mi piace moltissimo il fatto di avere un'altra form master details preposta alla sola modifiche, perché potresti implementare la gestione delle modifiche direttamente dalla form master details addetta per ora alla visualizzazione.

    Ti lascio questo spunto di miglioramento per il futuro.

    Per ora su scaricamento, evento  scaricamento della form modifica, invoca come segue :

    Private Sub Form_Unload(Cancel As Integer)

    If CurrentProject.AllForms("visualizza").IsLoaded Then

       Forms!visualizza.Refresh

    End If

    End Sub

    in pratica prima della chiusura della form mofica verifichi se la form visualizza, ( ovviamente devi inserire il nome corretto dell'oggetto) è caricata oppure no, se si, procedi con l'aggiornamento.

    Nel caso di aggiunta di nuovi dati dalla form modifica applica il metodo requery al posto di refresh.

    HTH.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento