Duplicare records con pulsante

di il
17 risposte

Duplicare records con pulsante

Saluti a tutti e bentrovati,
Per l'inserimento dei dati in un mio DB ho creato una "Maschera divisa".
Per facilitarmi l'inserimento dati, vorrei inserire qualcosa che mi faccia duplicare i records.
Ho scelto di fare detta operazione con l'inserimento di un pulsante in maschera.
Con la procedura guidata, Selezionando "operazioni su records", "duplicazione records" ho creato il pulsante.
Alla verifica del funzionamento non ottengo il risultato e mi compare un messaggio che dice "Il comando copy non è attualmente disponibile".
Dalla procedura guidata ho visto che il pulsante è stato creato con evento su clik Macro incorporata e sui comandi copy e past compare un triangolino di attenzione che descrive una azione non sicura.
Non ho capacità per apportare modifiche alla macro, qualcuno puo aiutarmi a risolvere la duplicazione dei dati ?
Grazie per le risposte

17 Risposte

  • Re: Duplicare records con pulsante

    Quando sei su "record nuovo" quel comando "non è disponibile" perchè Access non sa cosa deve duplicare.
    Se provi a posizionarti sul record precedente, quella macro dovrebbe funzionare. Ma attento perché duplica tutti i campi del record, anche il campo chiave primaria, che per definizione non può essere duplicato. Quindi vedrai apparire il messaggio di errore di "violazione di chiave primaria".
    Ma a te interessa davvero duplicare i valori di tutti i campi? O solo di alcuni (anche se la maggior parte)?
  • Re: Duplicare records con pulsante

    Grazie per la risposta Osvaldo,
    quasi sempre mi interessa duplicare il record precedente e quindi mi sono posizionato li ma non duplica nulla compare il messaggio e basta.
    in ogni caso non voglio che venga duplicata la chiave primaria ID.
    Premetto che voglio inserire il pulsante solo per evitare l'operazione di copia record incolla record che già posso fare perchè la maschera divisa me lo consente.
    Su sette campi in tabella 4 sono sempre duplicabili, i rimanenti 3 sono da correggere (es: Cambiare quantità o descrizione).
    Il tuo suggerimento di duplicare solo alcuni campi è ottimo, per me andrebbe sicuramente bene, ma non conosco un sistema per farlo.
    grazie
  • Re: Duplicare records con pulsante

    Per queste cose io preferisco, per ogni campo, sfruttare la combinazione tasti CTRL+' (apostrofo). È il comando che replica il valore del CAMPO del record precedente. Se ci prendi un po' la mano ti accorgerai che risulta molto comodo e sbrigativo.
  • Re: Duplicare records con pulsante

    OsvaldoLaviosa ha scritto:


    Quando sei su "record nuovo" quel comando "non è disponibile" perchè Access non sa cosa deve duplicare.
    Solo se non hai inserito nessun dato.

    OsvaldoLaviosa ha scritto:


    Se provi a posizionarti sul record precedente, quella macro dovrebbe funzionare.
    Senza dovrebbe...funziona

    OsvaldoLaviosa ha scritto:


    Ma attento perché duplica tutti i campi del record,
    Il record,appunto,non il campo.

    OsvaldoLaviosa ha scritto:


    anche il campo chiave primaria, che per definizione non può essere duplicato.
    Infatti non viene duplicato...viene duplicato il "Record" con una chiave primaria "NUOVA"

    OsvaldoLaviosa ha scritto:


    Quindi vedrai apparire il messaggio di errore di "violazione di chiave primaria".
    Nessun messaggio perchè non c'è nessuna violazione!

    OsvaldoLaviosa ha scritto:


    Ma a te interessa davvero duplicare i valori di tutti i campi?
    Pare di si tant'è che vuole duplicare un "record"

    OsvaldoLaviosa ha scritto:


    O solo di alcuni (anche se la maggior parte)?
    Magari, io direi un 35% al massimo il 40. boh
  • Re: Duplicare records con pulsante

    Osvaldo grazie per la risposta,
    Sto cercando di ottimizzare il DB per questo volevo inserire il pulsante.
    Io già duplico l'intero records con il copia incolla e successivamente correggo i campi da modificare che è operazione simile alla tua.
    Senza dovrebbe...funziona
    NON FUNZIONA ! ho descritto sul msg le difficoltà.
    grazie per le risposte
  • Re: Duplicare records con pulsante

    Per copiare un record si devono scrivere 4 righe di codice... sfruttamdo il record selezionato dai controlli di interfaccia, quindi si passa al RecordsetClone si fa un ADDNEW e ciclando i campi del recordset vi si incolla il valore del controllo associato.
    Chiaramente uno sviluppatore accorto assegna ai controlli lo stesso nome del campo associato...

    Ora vedo tu questo metodo funziona prova a tradurlo in codice sono 4 righe reali.
  • Re: Duplicare records con pulsante

    Prima di rispondere ho fatto un test su un mio database contenente già dati. Ho ripetuto pari pari i passaggi forniti da ernestosup, cioè la procedura guidata creazione pulsante e scelto "duplicazione records". Ho riscontrato gli stessi problemi. Poi ho dato la mia interpretazione.

    Se proprio vuoi "quel pulsante"...però vorrei tu chiarissi cosa vuoi duplicare.
    Preferisci
    A) Duplicare tutti i campi tranne la chiave primaria partendo da un record già esistente.
    B) Duplicare tutti i campi tranne la chiave primaria mentre ti trovi su "record nuovo" e vuoi duplicare il precedente (ultimo).
  • Re: Duplicare records con pulsante

    Grazie sempre perle Vs risposte,
    Alex scusami ma non ho molte competenze
    di seguito indico il codice che ho cercato di inserire, scopiazzando da un manuale, in una routin:
    Private Sub Comando22_Click()
    On Error GoTo Err_Comando22_Clik
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer
    DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer
    DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer
    Exit_Comando22_Clik:
    Exit Sub
    Err_Comando22_Clik:
    MsgBox Err.Description
    Resume Exit_Comando22_Clik
    End Sub
    Credo di aver capito che questo comando prima seleziona il record, successivamente lo copia e dopo lo incolla.
    Ho provato ad inserirlo ma non funziona perchè credo sia incompleto infatti manca la versione del mio access che io non conosco.
    Osvaldo,
    la soluzione B è quella che vorrei ottenere
    B) Duplicare tutti i campi tranne la chiave primaria mentre ti trovi su "record nuovo" e vuoi duplicare il precedente (ultimo).
    Ancora grazie per il Vs. aiuto
  • Re: Duplicare records con pulsante

    Prova a pensare a:
    1. Query che prenda in considerazione (filtra) il DMax del campo ID: avrà un solo record.
    2. Trasforma questa query in "query di accodamento" dove dici che vuoi accodare tutti i campi tranne il campo ID.
    3. Il clic del pulsante deve eseguire UNA VOLTA sola la query di accodamento.
  • Re: Duplicare records con pulsante

    Se interessa la logica per duplicare i Records è sviluppata in questo MiniDemo... perfettibile essendo banalmente implementato solo a titolo informativo:
    http://forum.masterdrive.it/access-79/copia-records-85917/

    Chiaramente è sempre posto il proncipio di avere codice RIUSABILE ed adattabile con il minor lavoro possibile a tutte le esigenze, quindi meno immediata da comprendere.
  • Re: Duplicare records con pulsante

    Alex il tuo suggerimento mi ha sbalordito, è eccezionale, dà tantissime possibilità di duplicazione.
    Sono però perplesso per l'utilizzo.
    Penso che durante la digitazione dei dati, il dovere selezionare i campi da duplicare mi faccia perdere piu tempo del mio volgare copia incolla.
    Ecco perchè il mio desiderio iniziale era quello duplicare con un solo clik l'intero record.
    Purtroppo (poca competenza) non sono riuscito ad aggiustare la routine che ho esposto nel mio precedente messaggio.
    Al clik mi compare il messaggio:"valore non valido per l'espressione nell'argomento 5"
    Vedrò se riesco con la query suggerita da Osvaldo.
    Grazie sempre per le risposte.
  • Re: Duplicare records con pulsante

    ernestosup ha scritto:


    Vedrò se riesco con la query suggerita da Osvaldo.
    Sono perplesso su un piccolo particolare. DMax va bene a patto che la tabella/maschera sia sempre ordinata per il CampoID. Altrimenti forse è meglio usare DLast.
  • Re: Duplicare records con pulsante

    Osvaldo
    Ho creato la query; da tbl "lavorazioni"
    Ho selezionato l'ultimo record (Fatto utilizzando la ultima ID 84)
    Ho accodato tutti i campi della tbl "Lavorazioni"
    Ho inserito il pulsante per l'esecuzione della query.
    Al funzionamento:
    Messaggio "L'esecuzione della query di accodamento modificherà i dati nella tabella" OK
    Messaggio "numero di righe che verranno accodate 83" (esattamente tutte le precedenti da quella selezionata)
    Non li accoda nella maschera, bensi li accoda in tbl "Lavorazioni"
    Sbaglio sicuramente qualcosa in procedura
    Quando eseguo il filtro posso filtrare solo con l'ultimo numero di ID, come inserire il DLast che tu dici ?
    ciao grazie
  • Re: Duplicare records con pulsante

    ernestosup ha scritto:


    Alex il tuo suggerimento mi ha sbalordito, è eccezionale, dà tantissime possibilità di duplicazione.
    Sono però perplesso per l'utilizzo.
    Penso che durante la digitazione dei dati, il dovere selezionare i campi da duplicare mi faccia perdere piu tempo del mio volgare copia incolla.
    Ecco perchè il mio desiderio iniziale era quello duplicare con un solo clik l'intero record.
    Purtroppo (poca competenza) non sono riuscito ad aggiustare la routine che ho esposto nel mio precedente messaggio.
    Al clik mi compare il messaggio:"valore non valido per l'espressione nell'argomento 5"
    Vedrò se riesco con la query suggerita da Osvaldo.
    Grazie sempre per le risposte.
    Il mio voleva essere uno spunto per farti capire come duplicare....
    Personalmente assegnare una funzione ad ALT+F10 e farei duplicare il record corrente usando la tecnica esposta nel demo semplificata ovvero senza la selezione ma prelevante i dati dal record corrente.
    Per quanto penso la cosa è banale... e sfruttare una combinazione veloce di tasti funzione aiuta a velocizzare.

    Saluti
Devi accedere o registrarti per scrivere nel forum
17 risposte