Nella procedura guidata, mi pare alla prima finestra, chiede proprio se vuoi utilizzare maschere già esistenti oppure vai a prendere dalla lista tabelle. Se scegli da tabelle, Access creerà comunque la sottomaschera, ma la denominazione resterà quella della tabella originaria. Pertanto il problema è solo di denominazioni. Le logiche di fondo sono coerenti in entrambi i casi.
Ok, in entrambi i casi le procedure di creazione della maschera sono simili e sfruttano lo stesso principio.
Ma mi resta il problema che spero di chiarire meglio:
non è detto che l'utente acceda dalla maschera di livello superiore (mascheraA), visto che magari si trova nella singola mascheraB, dove di norma legge i dati già inseriti, magari ha necessità di implementare un nuovo evento che resta comunque vincolato ad un record della tabellaA (trattandosi infatti di un nuovo "sottorecord" della tabellaB), dopo aver inserito i dati non riesce a salvare il record per problemi di coerenza del database.
ebbene io , se esiste la possibilità volevo tramite il pulsante "CmdCopiaeApriAltraMaschera" predisposto nella maschera copiare i dati inseriti erroneamente nella maschera bloccata dal vincolo di access, per poi incollarli nella tabella.
Ovviamente sbaglio nella realizzazione dell'idea, riporto il codice che mi proponevo di inserire che va rivisto e di parecchio visto che al click del mio pulsante mi trovo nella mascheraB, che finchè rimane aperta impedisce di copiare e salvare i dati nella corretta tabella.
Private Sub CmdCopiaeApriAltraMaschera_Click()
'operazioni in sequenza:
'seleziono il record dove mi trovo
DoCmd.RunCommand acCmdSelectRecord
'copio il record
DoCmd.RunCommand acCmdCopy
'apro la tabellaA in modalità editabile
DoCmd.OpenTable "tabellaA", acViewNormal, acEdit
'vado al record
DoCmd.GoToRecord , , acGoTo, _______
'qui sarebbe comodo inserire dove ho riportato "_______" il corrispondente valore del "camponumericoX" (che ricordo essere correlato con ID della tabellaA)
'a questo punto apro la tabellaB in modalità editabile
DoCmd.OpenTable "tabellaB", acViewNormal, acEdit
'vado ad un nuvo record
DoCmd.GoToRecord , , acNewRec
'incollo quanto precedentemente copiato
DoCmd.RunCommand acCmdPaste
End Sub
errori evidenti che non so risolvere:
1) sicuramente è già un limite utilizzare tali istruzioni immediatamente trascritte nel pulsante (infatti presumo che l'incollaggio non va in porto forse perché spostandosi dalla mascheraB alla tabella la memorizzazione si è persa);
2) conviene copiare l'intero record oppure campo per campo (memorizzando ognuno di questi in altrettante variabili)?
3) come spiegavo si tratta di un nuovo sottorecord della tabellaB che se viene aperta singolarmente in maniera diretta non consente aggiunzioni di record;
4) bisogna infatti simulare ciò che avviene materialmente nel database :aprire la tabellaA andare al record specifico, sulla sua Sx spuntare il segno "+" per visualizzare i sottorecord della rabellaB correlati, e da li si può aggiungere il nuovo record
5) selezionare il record di cui al punto 4
6) incollare i dati del record (che, dovrebbe essere rimasto memorizzato)
7) chiudere la mascheraB
salvare il record incollato