Newsgroup: it.comp.appl.access
Titolo: Maschera nidificata di secondo livello: non aggiunge record

Salve a tutti.
Come da oggetto ho una maschera con dentro una sottomaschera che a sua volta ha una sottomaschera:
maschera A
   |
   |_______ Maschera B
                   |
                   |_______Maschera C
 
Sostanzialmente non riesco ad aggiungere record all tabella della maschera C.
Le maschere A, B,C hanno sotto altrettante tabelle (tblA, tblB, tblC), per cui esiste un campo Id autonumber (chiave primaria) per tutte e 3 (IDA, IDB, IDC).
Per collegarle:
tblB ha un campo IDB, un campo IDA e una serie di altri campi.
tblC ha un campo IDC, un campo IDB e altri campi.
Esistono collegamenti campi master e secondari (a livello di maschera):
IDA<-------> IDA fra A e B
IDB<-------> IDB fra B e C
 
Se aggiungo un record a B non ci sono problemi, IDA viene scritto nell'apposito campo IDA della tabella B.
Purtroppo il campo IDC rimane sempre vuoto con la scritta (nuovo) anche se il campo IDB di tblC viene compilato (ma a questo punto non salvato) con l'IDB corretto (corrispondente al record attivo della tabella B).
 
Ho provato ad applicare le relazioni a livello di tabella, ma non è cambiato nulla.
Uso Access 2013.
 
Grazie in anticipo per l'aiuto
 
Pier


Dimenticavo ....
Per aggiungere un record alla tabella tblC uso ad esempio un tastino in frmC con il comando: 
DoCmd.GoToRecord , , acNewRec
senza che sortisca effetto, ma soprattutto senza nessun errore.


scusate, nessuna idea, c'è qualcosa di non chiaro?


Ragazzi aiuto!
Mi serve almeno uno spunto, un link ... non sono riuscito a trovare nulla di utile in rete.
Non voglio la pappa pronta davvero, altrimenti non imaparo, ma devo sistemare un problema in produzione, ho solo pochi giorni.
Grazie in anticipo

Hai detto una serie di cose che metterebbe in difficoltà chiunque nel risponderti perché di sensato e tecnicamente comprensibile c'è veramente poco.
Le relazioni tra tabelle non sono optioinals da PROVARE come non sono da gestire a caso i campi Chiave primaria e chiave esterna... mentre Sembra che di tutte le considerazioni da fare tu applichi una logica RANDOM priva di un ben che minimo supporto teorico.
A fronte di questo cosa potrebbe essere la risposta che ti aspetti...? 
 
@Alex


In base a quanto hai appena scritto, la risposta che mi aspetterei sarebbe: non ho capito un tubo di quel che hai chiesto, potresti essere più chiaro?
Risposta che ho visto molte volte e che reputo più che legittima, chi ha il problema spesso non è la persona più adatta a descriverlo.
 
Detto ciò, come posso essere più chiaro nella mia richiesta?
Essendo io dentro il problema, mi rendo conto di essere nella condizione di cui sopra.
 
Grazie infinite.

Buongiorno a tutti, visto che, a quanto pare il mio "supporto teorico" è chiaramente inesistente, provo a riproporre il problema in modo più chiaro. Nel caso non lo fosse vi prego di segnalarmelo.
 
Ho 3 tabelle: A, B, C. Ognuna di esse ha un suo ID univoco: IDA, IDB, IDC.
Per l'inserimento dei dati nelle tabelle uso 3 maschere nidificate che chiamerò: frmA, frmB e frmC, in particolare frmC è "dentro" (non conosco la teminologia esatta perciò chiedo scusa in anticipo) la frmB che a sua volta è "dentro" (come sopra) alla frmA.
 
Per "collegare i dati" (anche qui non conosco la terminologia esatta e richiedo scusa) ho strutturato le tabelle come segue:
-IDA è presente SIA nella tabella A (come chiave primaria, tipo dati autonumber)
che nella tabella B;
-IDB è presente SIA nella tabella B (come chiave primaria, tipo dati autonumber)
che nella tabella C.
 
Nelle form ho collegato i campi master e secondari come segue:
IDA <-----> IDA fra le tabelle A e B
IDB <-----> IDB fra le tabelle B e C.
 
Inoltre nella frmB, il campo IDA ha come valore predefinito: [forms]![frmA]![IDA]
Mentre per la frmC: [Forms]![frmA]![frmB]![IDB]
 
Fin qui tutto ok (per uno che non ha basi teoriche intendo), quando viene aggiunto un nuovo record ad A (tramite frmA) posso aggiungere n record a B (tramite frmB) senza problemi.
Se cerco di aggiungere però un record a C (tramite frmC nidificata come sopra), il record non viene aggiunto, senza fra l'altro messaggi di errore, nel campo IDC compare la scritta "(nuovo)" ma non vengono aggiunti record.
 
Mi rendo conto che la seconda parte della trattazione è meno chiara, perciò vi prego di domandarmi se non è chiaro.
 
Il punto è che devo sistemare un DB non mio in tempi brevi, i dati infatti si stanno accumulando (dati cartacei) e si devono riversare al più presto su un DB per statistiche che servono per un sacco di altri fini che non sto qui a descrivere.
 
Grazie in anticipo
 
 

 ...
 
Sei sicuro che nella sottomaschera B il focus si trova in un record già 
salvato mentre provi di aggiungere un record nella C?
 
Cosa esattamente fai per aggiungere un record nella C?
Codice, digitare qualcosa in un controllo...?
Cosa succede? p.e. Il controllo prende il valore che digiti o no? IDC 
non cambia mentre digiti qualcosa?
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 


Ciao Karl.
Innanzitutto grazie per l'interessamento.
Ho rimosso il valore predefinito come hai suggerito ([Forms]![frmA]![frmB]![IDB]) ed in effetti non cambia nulla.
Per il focus della sottomaschera B ti confermo che si trova su un record già salvato. Infatti la sottomaschera C è stata aggiunta e collegata alla B successivamente.
Per aggiungere un record alla tabella C tramite la sottomaschera c'è un pulsante con il codice:
DoCmd.GoToRecord , , acNewRec
al quale ho aggiunto qualche riga per la gestione degli errori.
Inizialmente c'era un pulsante che apriva una finestra che consentiva di copiare un file da un percorso qualunque ad uno specifico rinonimandolo (usando gli ID delle maschere fra l'altro). Essendo IDC nullo il codice andava in errore perchè gli mancava un dato.
Ora, ho aggiunto qualche riga di gestione errore:
On error got Err_ComandoXX
 
Err_ComandoXX:
   msgbox err.description & " errore n° " & err.number
   resume Exit_comandoXX
Exit_comandoXX:
   exit sub
 
mi restituisce errore 0
 
Un dettaglio, forse non trascurabile, è relativo alle schede. La sottomaschera B (quindi anche C) è in un layout a schede (nella seconda scheda) non so se questo possa in qualche modo creare problemi (che so, con qualche riferimento).
 
Ora ho provato ad aggiungere un campo descrittivo (che non piace a nessuno) e quando digito qualcosa lì, IDC si autoaggiorna (essendo autonumber) ma se clicco sul tastino per nuovo record non succede ...
 
Spero che queste informazioni siano utili.
Grazie ancora

 ...
 
Certo. Come scritto sopra in Access è sempre e dappertutto così che si 
deve immettere dati per aggiungere un record.



Facendo così il dato viene aggiunto, devo solo farlo digerire a chi lo deve usare.
Grazie infinite Karl, mi hai tolto di'impiccio