Duplicare un record

di il
3 risposte

Duplicare un record

Una casella di riepilogo popolata con una tabella ANAGRAFE
ho bisogno di creare una procedura per duplicare, con un pulsante, il record selezionato.
In realta' non devo duplicare tutti i campi ma solo alcuni.
Tenendo presente che la casella di riepilogo mi restituisce la PK della tabella ANAGRAFE
quale e' la procedura piu' corretta o piu' intelligente?
Aprire il DB con
Set myrst1 = CurrentDb.OpenRecordset("Anagrafe", dbOpenDynaset)
andarmi a cercare il record selezionato
myAnagrafe = Me.crpElenco.Column(0, myVarItm)
myrst1.FindFirst "ID_ANAGRAFE = " & myAnagrafe
andarmi a leggere i campi che mi interessano
myDato1 = myrst1.Fields("Dato1")
myDato2 = myrst1.Fields("Dato2")
ecc. ecc.
e materialmente inserirli
myrst1.AddNew
myrst1.Fields("Dato1") = myDato1
myrst1.Fields("Dato2") = myDato2
ecc. ecc.
myrst1.Update
myrst1.Close
e poi fare un requery sulla casella di riepilogo
o ci sono altri metodi migliori (o meglio piu' corretti)?

3 Risposte

  • Re: Duplicare un record

    Ti faccio 2 considerazioni.
    1)Se la ListBox è associata a Tabella/Query, espone il Recordset, quindi non hai bisogno di aprirne uno per leggere, ti basta leggere i Campi del RS della list e poi eseguire una ActionQuery, peraltro dovrebbe avere il Bookmark sul Selected.

    2) Ma la ListBox... cosa visualizza...? quante colonne ha...? Solo 1 il campo ID oppure anche i valori Dato1 e Dato2...?
    Immagino abbia almeno i 3 Campi, quindi perchè devi fare un giro così lungo per ricavare dati che hai già...?
    "INSERT INTO Anagrafe (Dato1,Dato2) VALUES ('" & Me!NomeListBox.Column(1) & "','" & Me!NomeListBox.Column(1) & "'")
    3) Oppure hai pensato ad una cosa simile:
    
    "INSERT INTO Anagrafe (Dato1,Dato2) SELECT Dato1,Dato2 FROM Anagrafe WHERE ID_ANAGRAFE = " & Me!NomeListBox.Value
    Che se ha come BoundColumn la Colonna associata al campo ID_ANAGRAFE è anche il Valore esposto dalla Proprietà VALUE.

    Diciamo che hai 3 Opzioni sicuramente migliori di quanto hai testato, io fossi in te, opterei per la 2° o la 3°
  • Re: Duplicare un record

    Grazie Alex
    la tabella ANAGRAFE ha molti campi
    la casella di riepiolgo e' associata ad una query dove ci sono solo pochi campi ordinati sul NOME
    PK invisibile, NOME, matricola e pochi altri (non tutti i campi che devo duplicare)
    devo duplicare i dati anagrafici classici NOME data e luogo di nascita cittadinanza indirizzo telefono mail ecc. ecc.
    dopo msgbox di conferma il muovo record duplicato nella tabella ANAGRAFE dovrebbe apparire nella listbox

    Direi cha la terza che mi hai detto, con una sola riga SQL, dovrebbe fare tutto il lavoro richiesto

    Fatto questo sarebbe opportuno che nella listbox la riga selezionata si posizionasse gia' sul nuovo record inserito
    ed essendo ordinata su NOME evidentemente subito sotto il record che si e' voluto duplicare.
  • Re: Duplicare un record

    Ti basta passare il valore alla ListBox dell'ultimo valore di PK inserito..., lo rilevi e lo aggiorni.
Devi accedere o registrarti per scrivere nel forum
3 risposte