Newsgroup: it.comp.appl.access
Titolo: Interessa molti: Copia di tabella relazionate.

Probabilmente la cosa interessa molti di voi (per questo credo che, se così
fosse, la soluzione potrebbe essere messa nel sito comune, per utilità di
tutti).
La domanda è:
Qualcuno conosce un metodo o trucco (o semplicemente modo) per fare il
duplicato di record di tabelle tra loro relazionate? Access in uso: 97
ESEMPIO:
Per comodità, si prendano le seguenti convenzioni:
A = Nome dalla Tabella A
B = Nome dalla Tabella B
C = Nome dalla Tabella C
D = Nome dalla Tabella D
UaM = Relazione del tipo Uno-a-Molti
Si ha la seguente situazione:
A -UaM-> B -UaM-> C
A -UaM-> D
Vorrei duplicare un record di A, e ovviamente anche tutti i record che hanno
con esso una relazione (a cascata quindi per tutti i record relazionati tra
di loro).
Avete presente quando si cancella un record relazionato ad altri e si ha
l'integrità referenziale attiva? Se confermate la cancellazione, Access
cancella "a catena" tutti i record relazionati.
Quello che devo fare è, similmente, duplicare con lo stesso concetto di
"catena" tutti i record relazionati al primo.
Grazie a chi interverrà.
Omar.
-- 
Posted from 
smtp4.libero.it
 [193.70.192.54] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 "catena" tutti i record relazionati al primo.
La domanda che ti devi porre e a cui dovresti dare pubblicamente risposta
(tanto x farci capire) è:
"Perché voglio fare una cosa che apparentemente va contro al normale
concetto di DB relazionale?"
Risposta: .... (restiamo in attesa)
La domanda va posta e la risposta deve essere esauriente, perché in un DB
relazionale la duplicazione di dati è vista come un'eresia, visto che ti
vengono messi a disposizione gli strumenti x non aver bisogno di duplicarli.
Attendo con ansia...   ;-)
--
Silvio
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access

Silvio
Ciao Silvio, non ho nessuna intenzione di dire eresie.
Se letta meglio, la mia mail denunciava questo mio intento, semplicemente:
L'applicazione si occupa di creare offerte (o preventivi, se rende meglio
l'idea).
Capita spesso che questi preventivi, una volta presentati, debbano essere
modificati per alcune varianti relative all'offerta stessa. Succede cioè che
debbano essere cambiate alcune quantità, o aggiunti o tolti alcuni dei
componenti dell'offerta stessa (record relazionati), perchè in seconda
analisi, il cliente cambia idea o vuole avere un'alternativa alla prima
offerta (a volte varia di poco, a volte sensibilmente.)
Avrei bisogno di operare in questo modo:
Non voglio aggiornare l'offerta vecchia, ma crearne un duplicato e
aggiornare quest'ultimo, in modo da non perdere i dati della prima offerta
(ed avere così uno "storico" delle offerte relative alla stessa vendita).
Eventualmente per distinguerle basterà cambiare il numero offerta.
Ti ricordo che le relazioni sono sempre queste:
 A = Nome dalla Tabella A
 B = Nome dalla Tabella B
 C = Nome dalla Tabella C
 D = Nome dalla Tabella D
 UaM = Relazione del tipo Uno-a-Molti
 Si ha la seguente situazione:
 A -UaM-> B -UaM-> C
 A -UaM-> D
Vorrei duplicare un record di A, e ovviamente anche tutti i record che hanno
con esso una relazione (a  cascata quindi per tutti i record relazionati tra
di loro.
Silvio, tu come risolveresti questa necessità senza duplicare?
Grazie.


 ha scritto nel messaggio
news:000001c07c8b$65dc2b00$e5101897@default...

Vista così, senza duplicare, mi sembra difficile...
... se volessi attaccarmi agli specchi, ti suggerirei una tabella
"VariantiOfferta", ma non mi sembra accettabile.
La situazione credo che ti si presenti dentro ad una maschera con relativa/e
sotto maschera/e, ma è proprio necessario duplicare tutti i dati?
Credo che l'unico modo x farlo decentemente sia quello di prevedere un
pulsante di comando e, su click di quest'ultimo, aprire x ogni tabella un
recordset, copiare i valori dei campi in variabili, fare Addnew e
ritrasferire i valori delle variabili nei campi del nuovo record.
Partendo dalle tabelle lato uno avresti da farlo nell'ordine x le tabelle A,
B, C e D.



Si, dici come pensavo. Purtroppo ho sperato che esistesse un modo piů
"veloce" ed automatico, che non scrivere il codice con i recordset.
Era questo che cercavo.
Pazienza, se anche tu confermi quello che "temevo", mi scriverň il codice.
Grazie.
Omar.
Ma devvero nessun altro ha la soluzione? (non mi arrendo, se posso evitare
di scrivere molto codice, meglio).


Credo anch'io che la strada da seguire sia quella che ti ha indicato Silvio.
Un problema simile l'ho avuto in un'anagrafica articoli per una distinta
base, ovvero articoli composti su piu' livelli.
Avevo la necessita' di creare nuovi articoli composti che differivano da un
articolo gia' presente ad esempio solo per un componente, un tessuto invece
di un altro,  mentre la restante parte del composto era identica
all'articolo gia' presente.
Mi sono creato un pulsante duplica che, presi dalla maschera i dati del
vecchio articolo, mi chiedeva con un inputbox il nuovo codice dell'articolo
composto (potresti automatizzare se utilizzi un codice progressivo con una
Dmax(...)+1..), mi creavo due query di accodamento, una lato "uno" e l'altro
lato "molti", che eseguivo con runsql....insomma sempre di soluzione via
codice si parla...
Ciao
Andrea