Newsgroup: it.comp.appl.access
Titolo: Duplicazione record

Ciao a tutti!
Ho bisogno del vostro aiuto.
Conosco abbastanza bene l'ACCESS ma non sono in grado di programmare in VBA.
Ho creato una tabella collegata con una relazione uno a molti ad un'altra
tabella.
Dopo aver creato una maschera per l'inserimento dei dati contenente
all'interno la sottomaschera per la tabella collegata ho aggiunto un bottone
(con l'autocomposizione) per la duplicazione del record.
Tutto funziona ma il bottone duplica solo il record della tabella principale
e non i record della tabella collegata, come invece vorrei.
Il codice che l'access crea associato al tasto è il seguente:
  DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
  DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
  DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append
Cosa devo fare per fare in modo che premendo il tasto mi copia sia il record
corrente che tutti i record collegati?
Ringrazio anticipatamente chiunque possa aiutarmi.
Ciao
FACE ONE

 wrote in message
98bmpj$foh$1...@lacerta.tiscalinet.it...

Ciao FACE ONE,
avrei anch'io il tuo stesso problema da risolvere.
Ho già postato al NG in precedenza, ma le uniche riposte che ho ricevuto, è
che ti devi fare tutto a codice, loppando a cascata tra i record relazionati
che intendi duplicare, mantenedo traccia del ID di relazione.
Perciò l'automatismo che speravo esistesse, pare non ci sia.
Se però tu fossi più fortunato di me nel ricevere riposte in merito, fammi
cortesemente sapere cosa ti hanno suggerito, perchè il mio problema l'ho
momentaneamente parcheggiato, e quindi non ancora risolto.
Grazie.
Omar.


Beh, se al codice VBA preferisci il codice SQL puoi sempre provare con delle
query di inserimento...
...OK, OK; scherzavo! ;-)
Ciao
Roberto

Ciao Omar,
in parte sono riuscito a risolvere il problema senza scrivere una riga di
codice ma non č una soluzione elegante.
Ti spiego come ho fatto utilizzando un esempio:
ho una tabella Tab ANAG
ID Contatore (Chiave)
COGNOME Testo
NOME Testo
ho un'altra tabella Tab NUMERI
ID Contatore (Chiave)
ID LINK Numerico
NUMERO Testo
ho creato una relazione uno a molti tra ID e ID LINK.
Ho creato una semplice maschera sulla Tab ANAG e con all'interno la
sottomaschera Tab NUMERI.
Sulla maschera ho messo due tasti.
Il primo crea la copia del record in cui sono posizionato, copiando solo i
valori della Tab ANAG e dandogli automaticamente un valore di ID che,
essendo autoincrementale, diventa il valore di ID piů grande.
Fatto questo mi posiziono nuovamente sul record che devo copiare e schiaccio
il secondo tasto che mi permette di copiare i record collegati.
Dove sta il trucco?
Il tasto contiene la seguente riga
DoCmd.OpenQuery "Query2", acViewNormal, acEdit
che chiama la Query2
Innanzitutto la query č di Accodamento in modo da aggiungere i record alla
Tab Numeri ma il problema rimarrebbe sull'ID che sarebbe sballato.
la query comprende tre Campi:
COGNOME ha ccome criterio : [Forms]![Msk ANAG]![Cognome] in modo da
prelevare il valore dalla maschera;
NUMERO
Espr1: MaxDiID che accoda a ID LINK risolvendo cosě il problema.
Cos'č MaxDiD ?
E' il campo di un'altra semplicissima query che preleva il valore massimo
del campo ID dalla Tab ANAG.
La soluzione non č elegantissima ma se non altro sono riuscito a risolvere
il problema in pochi minuti.
Spero di esserti stato di aiuto. Cmq se vuoi ti invio il file mdb che ho
usato per fare la prova.
Ciao

 Ti spiego come ho fatto utilizzando un esempio:
Come sarebbe a dire che l'uso di una query di accodamento e' "poco
elegante"?
Posso garantirti che, nella gestione di un db, non c'e' niente di piu'
elegante che usare le query per operare sui dati.
Semmai non e' molto chiaro perche' hai realizzato procedure che richiedono
diversi interventi dell'utente.
Perche' non hai messo tutte le righe di codice in un unico pulsante invece
di costringere l'utente a premere due pulsanti in sequenza?
Sib
--
il sito comune di it.comp.database.access:
http://www.sitocomune.com
------------------------------------------------------
La mia home
http://digilander.iol.it/syb
------------------------------------------------------
"Non sempre cio' che viene dopo e' progresso"
Alessandro Manzoni
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente

Grazie, ma non ci crederai, dopo aver risposto al tuo msg, ho rimesso le
mani sull'affare "duplicazione" e l'ho risolto... praticamente come te!
Mi resta però un "piccolo" problema: quando hai molte tabelle collegate, ad
esempio,
tra la TAB1 e la TAB2 c'è una relazione uno--molti e
tra la TAB2 e la TAB3 c'è un'altra relazione uno--molti e
ancora tra la TAB1 e la TAB4 ce n'è un'altra, e così via, la cosa si
complica esponenzialmente, o quasi.
Quindi il nostro problema diventa: parzialmente risolto.
Chissà forse un giorno...
Grazie cmq della disponibilità e se avessi nel tempo notizie, rimango
tutt'orrecchi.
Omar
-- 
Posted from [195.206.0.11] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Quando parlavo di "soluzione poco elegante" mi riferivo proprio al fatto che
l'utente deve fare varie operazioni che invece andrebbero automatizzate.
Purtroppo non conoscendo molto bene il VBA e avendo poco tempo a
disposizione è stata la soluzione obbligata.
Inizialmente avevo proprio chiesto a qualcuno se mi aiutava a risolvere
questo problema magari con alcune righe di codice.
Ciao
FACE ONE