Newsgroup: it.comp.appl.access
Titolo: Duplicare record collegati da un ID

Salve a tutti.
Ho una tabella:
tblDettProcessi
IDDettProcessi
IDProcesso
IDFase
Ordinale
e un'altra
tblCarattProcessi
IDCarattProcesso
IDDettProcesso
Attributo
Valore
Vorrei con una query duplicare dei record. In base a IDProcesso della
tblDettProcessi, ho fatto una query di selezione che mi mostra tutti i
record della tblCarattProcessi dove IDDettProcesso è uguale a
IDDettProcesso della tblDettProcessi. Io vorrei prendere questi record
e accodarli nella tblCarattProcessi per creare un'altra procedura
simile. Solo che nel campo IDDettProcesso di questa tabella ci deve
essere l'IDDettProcesso corrispondente a degli altri record della
tblDettProcessi.
Provo a fare un esempio:
tblDettProcessi
IDDettProcessi  2    5   6   4
IDProcesso       10  10  10  10
IDFase              1    3    5    4
tblCarattProcesso
IDCarattProcesso  1  2  3  4  5  6  7  8
IDDettProcesso     2  2  5  5  5  6  6 4
Gli altri sono campi non necessari in questa spiegazione.
Adesso io tramite una query, sono riuscito ad accodare una nuova serie
di record nella tblDettProcessi tutti riferiti ad un nuovo processo
(IDProcesso). Avrò quindi:
blDettProcessi
IDDettProcessi  7    8   9   10
IDProcesso       31  31  31  31
IDFase              1    3    5    4
Vorrei accodare alla tblCarattProcesso i nuovi dati, dovrei riuscire
cioè a fare questo:
tblCarattProcesso
IDCarattProcesso  9  10  11  12 13  14  15  16
IDDettProcesso     7  7     8    8  8    9    9   4
Per fare questo ho creato questa query:
INSERT INTO tblCarattProcesso ( Attributo, Valore, IDLavorazione,
IDFornitoreSE, IDDettProcessi )
SELECT qrylencoCarattPerDupl.Attributo, qrylencoCarattPerDupl.Valore,
qrylencoCarattPerDupl.IDLavorazione,
qrylencoCarattPerDupl.IDFornitoreSE,
qrylencoCarattPerDupl.IDDettProcessi
FROM qrylencoCarattPerDupl INNER JOIN tblDettProcessi ON
(qrylencoCarattPerDupl.IDDettProcessi =
tblDettProcessi.IDDettProcessi) AND (qrylencoCarattPerDupl.IDFase =
tblDettProcessi.IDFase)
WHERE (((tblDettProcessi.IDProcesso)=[Forms]!
[frmCriteriStampaProcessi]![Testo20]));
Ma questa aggiunge pari-pari l'IDDettProcesso del record di partenza.
Come posso fare?
Grazie
Stefano
P.S.: So che è una casino come l'ho spiegata ma non riesco a fare di
meglio.


Ho risolto così:
Ho fatto questa query:
INSERT INTO tblCarattProcesso ( Attributo, Valore, IDLavorazione,
IDFornitoreSE, IDFase )
SELECT qrylencoCarattPerDupl.Attributo, qrylencoCarattPerDupl.Valore,
qrylencoCarattPerDupl.IDLavorazione,
qrylencoCarattPerDupl.IDFornitoreSE, qrylencoCarattPerDupl.IDFase
FROM qrylencoCarattPerDupl INNER JOIN tblDettProcessi ON
(qrylencoCarattPerDupl.IDDettProcessi =
tblDettProcessi.IDDettProcessi) AND (qrylencoCarattPerDupl.IDFase =
tblDettProcessi.IDFase);
che compila tutto a parte l'IDDettProcessi che rimane con uno 0. Poi
ho questa query di aggiornamento:
UPDATE qryElencoProcessiperDupl INNER JOIN tblCarattProcesso ON
qryElencoProcessiperDupl.IDFase = tblCarattProcesso.IDFase SET
tblCarattProcesso.IDDettProcessi = qryElencoProcessiperDupl!
IDDettProcessi
WHERE (((tblCarattProcesso.IDDettProcessi)=0));
Che sistema tutti gli IDDettProcessi con 0 mettendo l'ID corretto.
Ciao a tutti.