[Access] Abilitare sottomaschera solo dopo inserimento dati in maschera principale

Anonimo
2010-01-09T14:35:36+00:00

Problema forse stupido ma mi ci sono incartato. Situazione classica: due tabelle collegate con relazione 1 > M, relative maschera e sotto-maschera sempre relazionate allo stesso modo, tutto funziona bene; il problema è che posso inserire dati sulla sotto-maschera quando ancora nessun dato non è stato inserito nella maschera principale, ovvero siamo nella classica indicazione (Contatore) nel campo ID chiave primaria. Appena inserisco un dato nella maschera principale la sotto-maschera mi si azzera e mi lega il suoi ID con quello della maschera principale, però se vado a dare un'occhiata in tabella trovo dei valori senza ID, ovvero quelli inseriti prima che avessi scritto qualcosa nella maschera principale, rimangono insomma dei record orfani nella sotto-tabella per così dire.

Come fareste voi per evitare questo? O anche, come posso evitare che sia abilitata la sotto-maschera se non ho ancora inserito niente in nessun campo della maschera principale?

Scusate l'intreccio ma è pure difficile da spiegare.

Massimo.

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
2010-01-09T15:04:10+00:00

In effetti funziona però il problema è che se accidentalmente immetto un valore nella sotto-maschera il tutto s'inceppa e viene visualizzato il messaggio "uno o più valori immessi non consentiti dalla regola Is Not Null etc..." e se cerco di ritornare alla maschera principale mi scrive "impossibile aggiungere o modificare il record ... necessario un record correlato", sono quindi costretto a chiudere brutalmente la maschera per poter ripristinare l'immissione dati.

Come avevo pensato, forse sarebbe meglio non permettere alcun inserimento fintanto che non esista un ID nella tabella principale... non so.

dopo la notifica del messaggio  "uno o più valori immessi non consentiti ...." basta premere il pulsante ESC.

(aggiunta)

Se vuoi non permettere l'inserimento da codice, puoi mettere nell'evento "Su Invio" dell'oggetto sottomaschera:

Private Sub NomeSottomaschera_Enter()

If Me.Dirty = False And Me.NewRecord = True Then
   MsgBox "Compilare la maschera principale", vbExclamation
   Me.Testo1.SetFocus
   Exit Sub
End If

End Sub

Cambia: NomeSottomaschera con il nome effettivo e Testo1 con il nome di una  casella testo presente nella maschera principale.

Ciao

Giorgio Rancati

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-01-09T15:51:48+00:00

    Era proprio quello che cercavo, grazie.

    Ciao, Massimo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-01-09T15:00:50+00:00

    In effetti funziona però il problema è che se accidentalmente immetto un valore nella sotto-maschera il tutto s'inceppa e viene visualizzato il messaggio "uno o più valori immessi non consentiti dalla regola Is Not Null etc..." e se cerco di ritornare alla maschera principale mi scrive "impossibile aggiungere o modificare il record ... necessario un record correlato", sono quindi costretto a chiudere brutalmente la maschera per poter ripristinare l'immissione dati.

    Come avevo pensato, forse sarebbe meglio non permettere alcun inserimento fintanto che non esista un ID nella tabella principale... non so.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-01-09T14:41:54+00:00

    Ciao Massimo,

    elimina dalla tabella lato Molti i record orfani, poi aprila in visualizzazione struttura, seleziona il campo Id e metti nella proprietà "Valido Se" IS NOT NULL.

    In questo modo è impossibile avere record orfani.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento