Impossibile aggiungere o modificare il record...

Anonimo
2010-09-16T20:38:16+00:00

Salve a tutti di nuovo,

ho una maschera con sottomaschera: nella maschera ho un campo IdCategoria (combo) che è collegato con una relazione 1 a molti ad una tabella Categorie. Relazione con integrità referenziale.

Quando non viene selezionato un valore nel campo IdCategoria e provo a posizionarmi nella sottomaschera compare il messaggio:

Impossibile aggiungere o modificare il record.Nella tabella "categorie" è necessario un record correlato. (chiaramente dovuto alla relazione tra le tabelle)

Ho provato ad inserire una routine sull'evento "prima di Aggiornare" della maschera ma non riesco ad intercettare l'errore e ad evitare di mostrare quel messaggio all'operatore.

Come posso risolvere?

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-09-17T18:39:06+00:00

Ciao Avatar,

non è chiarissimo lo scenario, ho l'impressione che più che dipendere dall'integrità referenziale il problema sia causato dalle proprietà del campo idCategoria nella tabella  associata alla maschera.

Ad esempio se hai impostato un valore di default (es. 0) e questo valore non è presente nelle categorie, ti darà l'errore che segnali, se invece non metti nessun valore di default e la proprietà Richiesto è impostata su No ti lascerà non inserire nessun valore per la Categoria.


Cinzia


Sito RIO

Il mio Blog

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-09-18T11:39:50+00:00

    Ciao Avatar77,

    ti propongo una soluzione semplice.

    Visto che non prevedi di avere record orfani, imposta la proprietà Richiesto a Sì per IDCategoria.

    Poi elimina il codice che hai mostrato e nell'evento "Su Invio" dell'oggetto Sottomaschera inserisci questo codice


    Private Sub NomeTuaSottomaschera_Enter()

        If IsNull(Me!Codice) Then

           MsgBox "Selezionare una categoria!!", vbExclamation

           Me!IDCategoria.SetFocus

        End If

    End Sub


    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-09-17T19:25:00+00:00

    Grazie Cinzia,

    hai (ovviamente) ragione, avevo impostato il valore di default a 0 in tabella, la proprietà Richiesto era comunque a No, ma era sufficiente per generarmi quel messaggio di errore. Ho tolto il valore di default e ho gestito la verifica della presenza del dato da codice sull'evento Before Update:

    Private Sub Form_BeforeUpdate(Cancel As Integer)

    On Error GoTo Form_BeforeUpdate_Err

    If IsNull(Me!IDCategoria) Then

        Dialog.Box "Il campo IDCategoria non può rimanere vuoto", vbInformation + vbOKOnly, "Avviso"

        Cancel = True

        Exit Sub

        Else

        End If

    Form_BeforeUpdate_Err:

        Exit Sub

    End Sub

    e sull'evento su Click del pulsante di chiusura:

    Private Sub cmdEsci_Click()

    On Error GoTo Err_cmdEsci_Click

    If IsNull(Me!IDCategoria) Then

        Dialog.Box "Il campo IDCategoria non può rimanere vuoto", vbInformation + vbOKOnly, "Avviso"

        Cancel = True

        Exit Sub

        Else

        DoCmd.Close

        End If

    Exit_cmdEsci_Click:

        Exit Sub

    Err_cmdEsci_Click:

        Dialog.Box Err.Description

        Resume Exit_cmdEsci_Click

    End Sub

    Cosi mi sembra risolto!! Mi confermi?

    Grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento