Apertura Sub_Form collegata mediante pulsante

di il
8 risposte

Apertura Sub_Form collegata mediante pulsante

Salve a tutti,

Vi chiedo aiuto per un problema che probabilmente ai più potrà sembrare banale, ma sul quale sono diversi giorni che ci stò sbattendo la testa.
Ho creato un DB per la gestione degli accessi in un'area riservata alla quale si accede mediante richiesta ed indicando la/le targhe dei veicoli ed i nominativi delle persone relativi ad ogni targa. Il DB l'ho stutturato così:

Tab_richieste 1 a molti con TAB_veicoli 1 a molti con TAB_nominativi. Ho Applicato l'integrità referenziale con aggiornamento ed eliminazione a catena dei record. Successivamente ho creato 3 maschere:

MainForm Richieste, SubForm Veicoli e SubSubForm nominativi. Fin quì tutto ok, perfettamente funzionante.

Per questioni sia di praticità che di grafica, dopo aver consultato alcuni thread in questo forum, ho eliminato la SubSubForm nominativi dalla SubForm veicoli nella quale ho inserito un pulsante che mi apre correttamente la SubSubForm nominativi filtrata secondo i record correlati dalla chiave primaria di Veicoli a quella esterna di nominativi grazie a questo codice:
Private Sub Comando50_Click()

DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenForm "MASC_Nomi", , , "[ID VEICOLI] = " & Me![ID VEICOLO]

End Sub
Problema: la SubSubForm nominativi non mi fa aggiungere nuovi record, mentre permette la modifica di quelli già esistenti... come posso ovviare a questo problema? Grazie

8 Risposte

  • Re: Apertura Sub_Form collegata mediante pulsante

    Controlla la proprietà maschera "Consenti aggiunte: Sì".
  • Re: Apertura Sub_Form collegata mediante pulsante

    Grazie per la risposta Osvaldo,

    Nella SubSubForm "TAB_nominativi" è settato su Si, già avevo controllato prima di scrivere il thread. Il messaggio di errore continua ad essere:
    Impossibile aggiungere o modificare i record. Nella tabella "TAB_veicoli" è necessario un record correlato
  • Re: Apertura Sub_Form collegata mediante pulsante

    Non viene valorizzata la Foreign Key quindi non avendo un riferimento lato 1 sarà impossibile aggiungere Records...
    Verifica perché accade questo o meglio verifica perché tu non lo valorizzi...
  • Re: Apertura Sub_Form collegata mediante pulsante

    @Alex ha scritto:


    Non viene valorizzata la Foreign Key quindi non avendo un riferimento lato 1 sarà impossibile aggiungere Records...
    Verifica perché accade questo o meglio verifica perché tu non lo valorizzi...
    Con le maschere collegate non ricordo se esiste il meccanismo
    Collega campi secondari: CampoID
    Collega campi master: CampoID

    Ad ogni modo, se l'ipotesi proposta da @Alex è vera, io imposterei (per togliermi da ogni equivoco) in MASC_Nomi.[ID VEICOLO] il
    Valore predefinito: [Maschere]![MASC_Veicoli]![ID VEICOLO]
  • Re: Apertura Sub_Form collegata mediante pulsante

    Ovviamente no
    , si fa da codice su parametro ARGS si passa il valore della FK e su LOAD si imposta come DEFAULTVALUE del controllo.
    Ho usato il DEFAULTVALUE non a caso...
  • Re: Apertura Sub_Form collegata mediante pulsante

    Grazie a tutti per le indicazioni.

    La foreign key mi sembra correttamente impostata, anche in virtù del fatto che la struttura del DB è talmente semplice e lineare che non vedo dove possa esserci il problema con la chiave di collegamento. Non ho capito cosa intenda @Alex per valorizzare, anche perché i records caricati sono tranquillamente modificabil.
    si fa da codice su parametro ARGS si passa il valore della FK e su LOAD si imposta come DEFAULTVALUE del controllo.
    Ho usato il DEFAULTVALUE non a caso...
    grazie anche per questa indicazione, purtroppo non riesco a sfruttarla al meglio con il mio livello conoscenza.

    Grazie Ad Osvaldo, proverò a seguire anche le tue indicazioni, ci studio un pò sù.

    Comunque considerando che prima della modifica di apertura della SubSubMasch_nomi tutto funzionava correttamente immagino il problema sia sulle proprietà della Sub_nomi su apertura
  • Re: Apertura Sub_Form collegata mediante pulsante

    Da quello che dici non hai proprio capito.

    Se hai Form/SubForm la FK che trovi nella SubForm viene valorizzata automaticamente avendo impostato i legami Master/Detail(Campi Master/Secondari) tra Form e Sub...
    Se invece apri una Form di INSERIMENTO questo non accade e sui NUOVI RECORDS nessuno valorizza la FK, pertanto per le regole di INTEGRITA' REFERENZIALE non potrai inserire un Record lato MOLTI senza che sia associato ad un Record lato 1.

    Il fatto che siano EDITABILI quelli presenti è OVVIO avendo già superato la questione della FK, sono 2 aspetti completamente distinti... quindi se fai confuzione tra queste 2 cose credo manchi un pezzo di teoria... ma la sostanza è quella che ti ho detto.
  • Re: Apertura Sub_Form collegata mediante pulsante

    @Alex ha scritto:


    Non viene valorizzata la Foreign Key quindi non avendo un riferimento lato 1 sarà impossibile aggiungere Records...
    Verifica perché accade questo o meglio verifica perché tu non lo valorizzi...
    Di nuovo salve a tutti, vi scrivo per comunicarvi che sembra abbia risolto il problema. Grazie @Alex e grazie Osvaldo.
    Purtroppo chi viene in questo forum, ad iniziare dal sottoscritto, lo fa proprio perché si è trovato ad utilizzare un prodotto office che non è intuitivo e semplice come Word, perciò pochi sono ferrati al punto di recepire i consigli dati: siamo per lo più utilizzatori finali.

    Comunque, bando alle ciance. Il problema della valorizzazione della FK ho cercato di capirlo in questi giorni, ho ripreso un vecchio DB fatto anni fa grazie al forum Master Drive, ed alcuni appunti di VBA presi in quell'occasione, insomma mi ci sono ammattito il giusto, per poi accorgermi di una stupida ed assurda svista: nella TAB_NOMINATIVI sul campo chiave esterna di ID_Vecoli era impostato il valore predefinito 0 ( ecco che tiro il pc giù dal terrazzo )

    Il resto lo ha fatto il codice che ho postato ad inizio thread con la dritta fornita da Osvaldo. Quindi per chi ne avesse bisogno ho fatto così:

    Sull'evento clic del pulsante ho inserito il seguente codice:
    Private Sub Comando47_Click()
    
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.OpenForm "MASC_Nomi", , , "[ID VEICOLI] = " & Me![ID VEICOLO]
    
    End Sub
    mentre per la valorizzazione della FK ho seguito quanto detto da Osvaldo: ho inserito su valore predefinito del campo ID_Veicolo della Form Nomi il seguente controllo:
    =[Maschere]![MASC_INS]![Masch2].[Form]![ID VEICOLO]
    Non so se didatticamente sia tutto corretto, ma ora la SubForm filtra per ID i record della SubSubForm e consente aggiunte.
    Grazie di nuovo
Devi accedere o registrarti per scrivere nel forum
8 risposte