Apertura sottomaschere con pulsante

di il
9 risposte

Apertura sottomaschere con pulsante

Buonasera, chiedo aiuto relativamente alla gestione di un db access che sto strutturando. Molto semplicemente ho creato una tabella principale con “ID_principale” e una tabelle secondarie con “ID secondario”, correlate tra loro tramite “ID_principale” che nella tabella secondaria ho riportato come campo numerico. Creando la relativa “maschera principale” automaticamente viene inserita anche la “maschera secondaria” e tutto funziona perfettamente ovvero inserendo i dati nella maschera principale e successivamente inserendo i dati nella maschera secondaria in quest'ultima i dati vengono relazionati all'ID principale in questione. Il problema è che, per problemi di visualizazione, vorrei che le due maschere fossero aperte in tempi diversi ovvero una volta inseriti i dati nella maschera principale, con un pulsante vorrei far aprire la maschera secondaria con l'ID principale della maschera che ho appena compilato. Ho creato sulla maschera principale un pulsante di “salva record” ed apertura maschera con indicazione di trovare il dato specifico ed indicando per entrambe le maschere l'ID_principale ma non funziona. Il pulsante apre la maschera secondaria ma non visualizza nessun ID_principale. Potete aiutarmi? Grazie

9 Risposte

  • Re: Apertura sottomaschere con pulsante

    Nella Maschera(lato M) ovviamente non hai modo di legare la FK che lega le 2 tabelle come faresti nel caso di Maschera/SottoMaschera, in quanto li ci sono i campi appositi che le relazionano Campi Master/Secondari.

    Quindi devi agire diversamente, ovvero passare alla Maschera lato M, usando il parametro Args il valore della FK(o PK lato 1) quindi su Evento Open della Form(lato M) recuperi leggendo OpenArgs ed assegni al controllo FK che non deve essere editabile la proprietà DefaultValue, in quel modo ad ogni aggiunta sarà legato alla FK corretta.

    Nella Maschera lato 1 scriverai:

    DoCmd.OpenForm "NomeFormLatoMolti", , , , , acDialog, Me.ControlloPK

    Nella Form lato M invece:

    Private Sub Form_Open(Cancel As Integer)
        If Len(Me.OpenArgs) > 0 Then
            Me.ControlloFK.DefaultValue = Chr(34) & Me.OpenArgs & Chr(34)
            DoCmd.RunCommand acCmdRecordsGoToNew
        End If
    End Sub
  • Re: Apertura sottomaschere con pulsante

    Ho provato ma sicuramente non ho compreso … nella maschera principale inserisco un pulsante con routine evento "DoCmd.OpenForm MASCHERA SECONDARIA, , , , , acDialog, Me.ControlloPK.

    Nella MASCHERA SECONDARIA ho provato ad inserire il codice nel campo "ID_principale" ma non riesco a trovare il modo perchè penso vada inserito tramite la finestra delle proprietà tab dati ma li non mi da la possibilità di aprire l'edit di VB.

  • Re: Apertura sottomaschere con pulsante

    In alternativa al suggerimento di @Alex che comporta la necessaria conoscenza di programmazione VBA, se il problema e' solo di visualizzazione dei controlli delle due maschere in una sola schermata, potresti utilizzare il controllo a schede: nella prima scheda metti i controlli della maschera principale, nella seconda scheda sposti quelli della maschera secondaria. Invece di utilizzare un pulsante, Ti sposti da una maschera e l'altra tramite le label del controllo a schede.

  • Re: Apertura sottomaschere con pulsante

    22/04/2024 - PABLO71 ha scritto:


    Nella MASCHERA SECONDARIA ho provato ad inserire il codice nel campo "ID_principale" ma non riesco a trovare il modo perchè penso vada inserito tramite la finestra delle proprietà tab dati ma li non mi da la possibilità di aprire l'edit di VB.

    Il secondo codice proposto da @Alex lo devi associare all'evento “Su apertura” della maschera secondaria.

    Mi permetto di aggiungere che, se la maschera secondaria la apri sempre e comunque DOPO la maschera principale (cioè mai da sola), potresti impostare al campo ID_Secondario il:
    Valore predefinito: [Maschere]![NomeMascheraPrincipale]![ID_principale]

    In questo modo potresti anche non usare OpenArgs e l'impostazione valore, poiché la maschera secondaria associerà sempre l'ID_principale.

  • Re: Apertura sottomaschere con pulsante

    23/04/2024 - Mailman ha scritto:


    In alternativa al suggerimento di @Alex che comporta la necessaria conoscenza di programmazione VBA, se il problema e' solo di visualizzazione dei controlli delle due maschere in una sola schermata, potresti utilizzare il controllo a schede: nella prima scheda metti i controlli della maschera principale, nella seconda scheda sposti quelli della maschera secondaria. Invece di utilizzare un pulsante, Ti sposti da una maschera e l'altra tramite le label del controllo a schede.

    Questa opzione l'ho già provata ed è una valida alternativa però ho 6 sottomaschere a cascata (nell'esempio che ho scritto ho semplificato il problema) ed inserendo il controllo a schede in ognuna dopo poco perdo coscienza di dove mi trovo

  • Re: Apertura sottomaschere con pulsante

    23/04/2024 - PABLO71 ha scritto:


    ho 6 sottomaschere a cascata

    Raccontata così, non sembra una valida progettazione. Penso che occorre rivedere il tutto, ma per poterlo affermare pienamente occorre conoscere i nomi propri di maschere e campi.

  • Re: Apertura sottomaschere con pulsante

    22/04/2024 - PABLO71 ha scritto:


    vorrei che le due maschere fossero aperte in tempi diversi ovvero una volta inseriti i dati nella maschera principale, con un pulsante vorrei far aprire la maschera secondaria con l'ID principale della maschera che ho appena compilato.

    puoi fare un disegno di cosa vorresti realizzare?

    questo è quello che ho capito io.

  • Re: Apertura sottomaschere con pulsante

    Secondo me, nel tuo caso potresti usare la visualizzazione da false a true della sottomaschera, utilizzando un pulsante.

  • Re: Apertura sottomaschere con pulsante

    Io l'avevo pensata con un resize a tendina…

    Magari visualizzando il primo record che sia vuoto o peno. All'enter nella tabella fa il resize in automatico.

    Aspetto delucidazioni.

Devi accedere o registrarti per scrivere nel forum
9 risposte