Newsgroup: it.comp.appl.access
Titolo: Duplicare un ordine

Ho un data base nel quale Realizzo il carico dell'ordine utilizzando una 
maschera (intestazione ordine) e una sottomaschera (Righe ordine), avrei la 
necessità di duplicare un ordine già inserito come posso realizzare ciò
Grazie se utilizzate una spiegazione elementare 

 ha scritto nel messaggio
news:xqFPe.106307$fm.69...@news4.tin.it...

Duplicare un record ordine e i relativi record detaglio correlati cambiando
loro il valore della chiave esterna in modo che coincida con la chiave
primaria del nuovo record ordine appena duplicato non è una cosa che può
essere spiegata in maniera proprio elementare e per realizzarlo te la devi
cavare abbastanza bene con VBA, in caso contrario il nostro sarebbe un
dialogo tra sordi.
Allora, come te la cavi con VBA e DAO?
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel 
messaggio news:NVFPe.32066$HM1.9...@twister1.libero.it...


 me la cavo con vba ma non sono sicuramente una cima
Quando rispondi scrivi DOPO e non prima del testo dei messaggi precedenti.
Usando VBA duplica il record ordine, quindi memorizzati la vecchia chiave
primaria del record ordine e con la funzione DLast memorizzati anche la
chiave primaria del nuovo record ordine duplicato; a questo punto apri un
recordset sulla tabella dettaglio ordini e scorri tutti i record in essa
contenuti: quando incontri i record con chiave esterna uguale alla vecchia
chiave primaria del record ordine duplicali avendo cura di sostituire il
valore della loro chiave esterna con il valore che hai precedentemente
memorizzato della chiave primaria del record duplicato.
[CUT]


 ha scritto nel messaggio 
news:xqFPe.106307$fm.69...@news4.tin.it...

Io ho affrontato lo stesso problema ed avevo ben 2 sottomaschere!
Ho risolto cosi' (te lo spiego x 1 maschera):
 - Ho creato un campo invisibile in cui memorizzare il nuovo ID (da 
duplicare) (non associato)
(il codice va all'ultimo record e memorizza nel campo "TRASPID" il nuovo ID 
record, ho dovuto fare così perchè utilizzo un campo contatore (l'ID 
appunto) che siccome è autogenerato non ero in grado di controllare)
- Ho creato PulsCopia sulla maschera principale:
Private Sub PulsCopia_Click()
Dim Corrente As Long
Dim UltimoId As Long
Corrente = Me.CurrentRecord
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 'Qui eseguo
    DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70 'il copia e 
incolla della
    DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'maschera 
principale
    DoCmd.GoToRecord , , acLast
UltimoId = Me.ID                                                'qui 
memorizzo il nuovo ID in una variabile
DoCmd.GoToRecord , , acGoTo, Corrente         'torno al record da duplicare
Me.TRASPID = UltimoId                                    'memorizzo nella 
maschera (vecchia) l'ID (nuovo)
DoCmd.OpenQuery "QueryCopia"                      ' apro la query di 
accodamento
DoCmd.GoToRecord , , acLast                           ' vado all'ultimo 
record (Copiato!!!)
End Sub
ma come è fatta la query di accodamento?
INSERT INTO [Dett Mezzi] ( ID, IdMezzo, Ore, Carburante )
SELECT Forms!Rapporto!TRASPID AS NuovoID, [Dett Mezzi].IdMezzo, [Dett 
Mezzi].Ore, [Dett Mezzi].Carburante
FROM [Dett Mezzi]
WHERE ((([Dett Mezzi].ID)=[Forms]![Rapporto]![ID]));
inserisce nella tabella correlata (quella dal lato "molti") i record che 
hanno come chiave l'ID del record da duplicare, ma memorizza quello nuovo.
Non so se esiste un mezzo piu' semplice, io qui ci ho fatto le notti (ho una 
tecnica piuttosto empirica di programmazione) quindi piu' che riportarti 
cio' che ho fatto io...

 ha scritto nel messaggio 
news:3KHPe.18178$zs....@tornado.fastwebnet.it...

Scusate se mi intrometto
sono alle prese proprio con questo probelma..
nel mio caso ho ben 4 tabelle correlate ed ho risolto il problema con il 
metodo di Luca79
morale della favola .. provando ad inserire nel db una quarantina di aziende 
l'operazione di accodamento diventa lentissima
ed il db cresce a dismisura   ..per 40 aziende inserite è arrivato a 130 
MB!!!
La cosa strana è che access accoda bene i dati e la tabella più grossa del 
DB contiene 430 record!

 ha scritto nel messaggio 
news:HyIPe.84880$2U1.4...@news3.tin.it...

HAI LETTO CHE X TROVARE QUEL METODO NON CI HO DORMITO LA NOTTE?!?!?
Scherzo ;-P
Per i miracoli mi sto attrezzando, l'unica cosa che ti posso dire è di 
provare a compattare il database dopo aver fatto un po' di operazioni di 
copia.
Per la lentezza (ti prego dimmi che lanci tutte e quattro le query di 
accodamento insieme e non ripeti 4 volte l'operazione che ho suggerito io) 
io non ho notato grossi rallentamenti....