Maschera di input dati che aggiorna più tabelle

di il
12 risposte

Maschera di input dati che aggiorna più tabelle

Buongiorno a tutti,

nel realizzare un piccolo data base in Access, non riesco a risolvere il seguente problema: la maschera che aggiorna tre delle quattro tabelle (la quarta ha già dentro dei dati) non mi fa inserire, nei campi da riempire alcuna informazione dandomi come errore:" impossibile immettere un valore in un campo vuoto del lato uno di un outer joint".

Il DB, come dicevo, è formato da una tabella con i movimenti del mio conto corrente bancario corredato, oltre ai campi presenti nel file excel importato in tabella access, di ID (numerazione automatica) ed un altro campo aggiunto da me (formato si/no); le altre tabelle sono; causali, sub_causali e note; queste tre tabelle sono tutte formate da tre campi: ID specifico della singola tabella, ID esterno ed il campo utile alla scrittura.

le quattro tabelle sono in relazione tra loro con joint uno a molti la tab. movimenti è collegata con causali tramite ID e l'id esterno della tabella, la tab. sub_causali collegata con l'ID causali e l'id esterno, la tabella note tra ID sub_causale e id esterno nella tab note.

La maschera contiene tutti i campi ( compresi gli ID delle tabelle che gli id esterni); se la prima tabella non ha dati riesco ad aggiornare il tutto ed i dati scritti in tabella vanno ad aggiornare correttamente i campi di tutte le tabelle; per causali e sub_causali sono riuscito a fare delle caselle combinate a cascata per velocizzare il tutto; quando vado a popolare la tabella movimenti con i dati presenti nei movimenti del mio conto corrente i campi causali, sub_causali e note non mi fanno più nè scegliere dal menù a tendina nè scrivere e compare il messaggio sopra menzionato.

Ho provato a cambiare le relazioni tra le tabelle, a creare delle sottomaschere  ma il risultato è sempre lo stesso.

Mi riuscireste a darmi una mano per risolvere il problema?

Grazie infinite

Nik1960

12 Risposte

  • Re: Maschera di input dati che aggiorna più tabelle

    Metti nomi tabella e relativi campi

    Descrivi quale campo e tabella non aggiorna e su quale tabella metti il controvalore. (La relazione che hanno).

  • Re: Maschera di input dati che aggiorna più tabelle

    Certo!

    queste sono le relazioni tra le tabelle ed i campi delle tabelle

    La tabella popolata è la TBL_MOVIMENTI

    la struttura lella maschera è questa, i campi che non si aggiornano sono quelli in giallo:

    Grazie!

    Nik1960

  • Re: Maschera di input dati che aggiorna più tabelle

    Non si vede nulla

  • Re: Maschera di input dati che aggiorna più tabelle

    Ciao, scusa prova ora

  • Re: Maschera di input dati che aggiorna più tabelle

    ...ecco forse sono riuscito anche con le relazioni:

  • Re: Maschera di input dati che aggiorna più tabelle

    Scusa ma causale e subcausale per cosa differiscono? le note sono in funzione della subcausale identiche per tutte le subcausali di valore 1?

    Le note, se sono tutte standard il le inserirei 1 a 1 con la tb movimenti o 1 a m se ci sono piu' note per quel movimento.

    cosa contiene la tabella causale (io userei il plurale) e cosa la tabella subcausale?

    supponendo che un movimento sia del tipo:

    dataoperazione  datavaluta  importo  causale              descrizione                              accredito/addebito

    01/01/25               01/01/25      100,00   versamento     versamento allo sportello     accredito

    01/01/25               30/12/24         50,00  a/b                     vostro a/b nr xxxxxxx            addebito

    ...

    la causale la prelevi dalla tabella causali, la descrizione è da scrivere a mano (dubito cher per a/b sia sempre lo stesso assegno) come l'importo  (non penso che ci siano assegni prestampati da 50,00) il tipo di operazione lo selezioni (accredito / addebito o in alternativa controlli se sulla tabella causale hai un campo tipomovimento da valorizzare come accredito o addebito).

    quel trenino di relazioni a cosa serve?

    quando lato M non hai la voce, apri il form di gestione causali e inserisci la nuova voce causale, poi tornando al movimento selezioni la nuova voce.

  • Re: Maschera di input dati che aggiorna più tabelle

    Confesso che non ho compreso esattamente il problema, ma provo a dire qualcosa.

    1) Innanzitutto "maschera di input" è un termine molto specifico-tecnico che significa tutta un'altra cosa dal significato che vorresti dare tu. Nel tuo caso, meglio parlare genericamente di "maschera" o "maschera per inserimento dati".

    2) Io credo che tu hai bisogno di un meccanismo che in gergo va sotto il nome di "caselle combinate a cascata". Ci sono molte discussioni che ne parlano, oppure leggi qui

    Caselle combinate a cascata.docx

  • Re: Maschera di input dati che aggiorna più tabelle

    05/08/2025 - sihsandrea ha scritto:

    Scusa ma causale e subcausale per cosa differiscono? le note sono in funzione della subcausale identiche per tutte le subcausali di valore 1?

    Le note, se sono tutte standard il le inserirei 1 a 1 con la tb movimenti o 1 a m se ci sono piu' note per quel movimento.

    cosa contiene la tabella causale (io userei il plurale) e cosa la tabella subcausale?

    supponendo che un movimento sia del tipo:

    dataoperazione  datavaluta  importo  causale              descrizione                              accredito/addebito

    01/01/25               01/01/25      100,00   versamento     versamento allo sportello     accredito

    01/01/25               30/12/24         50,00  a/b                     vostro a/b nr xxxxxxx            addebito

    ...

    la causale la prelevi dalla tabella causali, la descrizione è da scrivere a mano (dubito cher per a/b sia sempre lo stesso assegno) come l'importo  (non penso che ci siano assegni prestampati da 50,00) il tipo di operazione lo selezioni (accredito / addebito o in alternativa controlli se sulla tabella causale hai un campo tipomovimento da valorizzare come accredito o addebito).

    quel trenino di relazioni a cosa serve?

    quando lato M non hai la voce, apri il form di gestione causali e inserisci la nuova voce causale, poi tornando al movimento selezioni la nuova voce.

    la causale per es trasporti, le sub causali di casa sono per es. carburante, autostrada, parcheggio, manutenzione ecc.

    le note sono appunti legati alla sub causale, tutte differenti tra loro, provo a fare quello che mi hai detto relazionando la TBL_NOTE direttamente con i movimenti.

    l'obiettivo di questo DB è quello di raggruppare in categorie (causali) ed in sotto categorie (sub_causali) tutte le spese che compaiono nell'estratto conto della mia banca (scaricato dalla homebanking in formato excel ed importato nella tabella movimenti del mio DB.

    per questo ho messo in relazione le tabelle come mostrato precedentemente.

  • Re: Maschera di input dati che aggiorna più tabelle

    05/08/2025 - OsvaldoLaviosa ha scritto:

    Confesso che non ho compreso esattamente il problema, ma provo a dire qualcosa.

    1) Innanzitutto "maschera di input" è un termine molto specifico-tecnico che significa tutta un'altra cosa dal significato che vorresti dare tu. Nel tuo caso, meglio parlare genericamente di "maschera" o "maschera per inserimento dati".

    2) Io credo che tu hai bisogno di un meccanismo che in gergo va sotto il nome di "caselle combinate a cascata". Ci sono molte discussioni che ne parlano, oppure leggi qui

    Caselle combinate a cascata.docx

    Il mio problema  è che il DB funziona, ovvero mi fa scrivere nei campi della maschera (utilizzando ciò che citi: "caselle combinate in cascata" che attingono le voci da altre due tabelle) solo quando, nella maschera di cui ho mostrato la struttura, inserisco  i dati tutti manualmente; se però riempio la tabella movimenti scaricando dalla home banking la lista dei movimenti e vedendo nella maschera i campi riferiti alla tabella movimenti compilata, non mi fa compilare i restanti campi ovvero causali, sub_causali e note dandomi il seguente messaggio: " impossibile immettere un valore in un campo vuoto del lato "uno" di un outer joint"

  • Re: Maschera di input dati che aggiorna più tabelle

    La subcausale è sempre obbligatoria?

  • Re: Maschera di input dati che aggiorna più tabelle

    05/08/2025 - Nik1960 ha scritto:

    il DB funziona, ovvero mi fa scrivere nei campi della maschera (utilizzando ciò che citi: "caselle combinate in cascata" che attingono le voci da altre due tabelle) solo quando, nella maschera di cui ho mostrato la struttura, inserisco  i dati tutti manualmente

    OK. È così che devi lavorare.

    05/08/2025 - Nik1960 ha scritto:

    se però riempio la tabella movimenti scaricando dalla home banking la lista dei movimenti e vedendo nella maschera i campi riferiti alla tabella movimenti compilata, non mi fa compilare i restanti campi ovvero causali, sub_causali e note

    Non devi lavorare da tabella.

    Il meccanismo delle caselle combinate a cascata funziona proprio in virtù dei valori prelevati da "caselle di maschera". Per tanto il VBA che le regola non può funzionare con le tabelle.

  • Re: Maschera di input dati che aggiorna più tabelle

    05/08/2025 - Nik1960 ha scritto:

    la causale per es trasporti, le sub causali di casa sono per es. carburante, autostrada, parcheggio, manutenzione ecc.

    Penso che dalla banca estrapoli i dati in xls.

    La banca non sa se la causale è trasporti. 

    La banca come causale ha pagamento carta o bonifico.

    Quello che stai cercando di fare è una estensione analitica delle uscite.

    Devi implementare a mano i vari dettagli.

    Es.

    Data x uscita 100 descrizione distributore XY

    Data x uscita 2.60 caselli autostradali Frosinone

    Ecc...

    Lato molti puoi avere valori null e nulla li devi registrare.

    Con un controllo su campo null lanci una procedura che mostra la riga e da combo selezioni la tipologia (non causale) e il dettaglio (causale).

    Per questi vale la regola della cascata.

    Il ciclo lo termini fino all'ultimo null e se qualche riga prevede che non ci siano dettagli (sub1) puoi prevedere il record zero che in cascata mette anche zero al dettaglio (sub2) così che alla fine nessuno record ha null come valore per il campo che innesca il ciclo.

    Poi completi con "record x di x importati correttamente".

    Se puoi inserisci un comando per interrompere il ciclo e riprenderlo in vari step (2900789336 record potrebbero impegnare l'utente che decide di elaborarli poco per volta).

    Con questi dati posso darti solo questa risposta.

Devi accedere o registrarti per scrivere nel forum
12 risposte