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

Salve, vorrei sapere se è possibile duplicare i record che
appartengono ad una tabella relazionata alla principale, mi spiego
meglio; in una maschera ho una tabella "Offerta" che contiene
IDOFFERTA e IDCLIENTE poi ho ua sottomaschera che ha la tabella
"DettagliOfferta" che contiene campi IDDETTAGLI , DESCRIZIONE e
IDOFFERTA (relazionata alla precedente); vorrei che con un comando
"Duplica Offerta" sulla maschera principale spostasse IDOFFERTA a
nuovo record, mantenesse il solito IDCLIENTE e duplicasse su nuovi
record le descrizioni dell'offerta precedente.


Si che è possibile in quanto nella tabella Dettagli la chiave primaria
sarà relativa ad un nuovo Dettaglio... e la chiave esterna sarà sempre
quella dell'offerta
Mi sfugge però il senso della cosa...
@Alex

 @Alex
Forse si vuole evitare di riscrivere alcuni campi lunghi...ma comunque hai 
due modi
1- attraverso query di accodamento
2- codice VBA
in entrambi i casi basta che recuperi i valori dalla maschera dove lanci il 
comando...nella query recuperi con
forms!tuaform!tuocampo...nel campo id metterai una cosa del tipo 
Max("[ID]";"tuatabella";tuocriterio)
In vba � similare ma userai i recordset...vedi tu ma � una cosa 
fattibilissima
Ciao
-- 
Roberto da Parma 

 - Mostra testo citato -
Grazie per la risposta...
sono un pò limitato in access e ti prego di essere elementare; pensavo
anch'io ad una query di accdamento ma se eseguo nuvo record nella
maschera, la sottomascherera sarà vuota e nella query non ho più nulla
mentre invece dovrei poter "incollare" i record che avevo prima

 mentre invece dovrei poter "incollare" i record che avevo prima
Prendi spunto da qui ...
http://www.allenbrowne.com/ser-57.html


Scusa, ho provato a sostituire i campi come indicato e funziona quasi
tutto
senza errori ma manca la duplicazione dei campi nella sottomaschera,
in cosa
sbaglio??
Grazie e scusa ancora...
Dim strSql As String    'SQL statement.
Dim lngID As Long       'Primary key value of the new record.
   'Save and edits first
   If Me.Dirty Then
     Me.Dirty = False
   End If
   'Make sure there is a record to duplicate.
   If Me.NewRecord Then
     MsgBox "Select the record to duplicate."
   Else
       'Duplicate the main record: add to form's clone.
       With Me.RecordsetClone
           .AddNew
           !IDcliente = Me.IDcliente
           !Data = Now()
           !Azienda = Azienda
           !Impiegato = Impiegato
           !Oggetto = "Aggiornamento lisino"
               'etc for other fields.
           .Update
           Elenco24.Visible = True
            Recalc
'Save the primary key value, to use as the foreign key for the related
records.
           .Bookmark = .LastModified
           lngID = !IDofferta
   'Duplicate the related records: append query.
   If Me.[SottDettOfferta].Form.RecordsetClone.RecordCount > 0 Then
   strSql = "INSERT INTO [QdettOfferta] ( LINEA, PREZZO, UM ) " & _
"SELECT " & lngID & " as LINEA, PREZZO, UM " & _
   "FROM [QdettOfferta] WHERE IDofferta = " & IDofferta & ";"
   DBEngine(0)(0).Execute strSql, dbFailOnError
           Else
 MsgBox "Non c'era nessuna linea dell'offerta precedente da
duplicare."
           End If
           'Display the new duplicate.
           Me.Bookmark = .LastModified
       End With
   End If

 ha scritto nel messaggio 
news:72d1a90b-925a-4562...@w6g2000yqw.googlegroups.com...

Fai il debug del tuo codice e controlla il ciclo della tabella 
secondaria...magari non passi correttamente i valori oppure la SELECT 
protrebbe non essere scritta bene.
Il codice � bello pronto devi solamente "sostituire ragionando" i tuoi 
valori e nel tempo stesso serve anche a te per capire il funzionamento...
