Scopri come creare una funzione VBA che ti consenta di copiare determinati dati da record precedenti con un semplice clic di un pulsante. Non è necessario digitare ripetutamente le stesse cose.
Hai mai avuto un'esperienza in cui devi inserire un nuovo record in Access che ha esattamente lo stesso set di valori con un record precedente ad eccezione di un campo? Può essere noioso, vero? Questo tutorial ti insegnerà come creare una funzione che con un clic di un pulsante, puoi copiare determinati valori di un record precedente, risparmiando tempo dalla riscrittura. Basta seguire i passaggi seguenti.
Scarica Ora
Se vuoi start per utilizzare la funzione il prima possibile, puoi:
Scarica ora il database di esempio con i codici VBA
Altrimenti, se vuoi fare il fai-da-te, puoi leggere i contenuti di seguito.
Passaggi per aggiungere una funzionalità "Crea copia record" in Access
- Apri il modulo in visualizzazione struttura.

- Aggiungi un pulsante di comando. Salta la procedura guidata del pulsante di comando.
- Aggiungi un Al clic evento al pulsante.
- In visualizzazione struttura, seleziona il pulsante.
- Apri la finestra delle proprietà (ALT + Invio)
- Vai alla scheda Evento > Al clic >...
- Quando il Scegli Costruttore viene visualizzato il menu, selezionare Code Builder.
- Fare clic su OK.
- Questo aprirà l'editor VBA.
-
- Copia il codice seguente e modificalo in base alle tue esigenze. Usa i commenti come guida.
Private Sub Command24_Click() Dim currentID As Long 'TO DO: change all instances of 'BookID' with the actual name of your table's ID or primary key If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If currentID = BookID DoCmd.GoToRecord record:=acNewRec 'TO DO: set the fields to be copied (those that most likely will have the same values) 'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID) Author = DLookup("Author", "Books", "BookID=" & currentID) Country = DLookup("Country", "Books", "BookID=" & currentID) Language = DLookup("Language", "Books", "BookID=" & currentID) Genre = DLookup("Genre", "Books", "BookID=" & currentID) Publisher = DLookup("Publisher", "Books", "BookID=" & currentID) Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user End Sub - Ora prova il codice se funziona.
Codice spiegato
Il codice sopra è stato utilizzato per il database di una libreria. A causa delle serie di libri, ci sono casi in cui tutti i dettagli del libro (ad es. Autore, Paese, Lingua, ecc.) sono gli stessi tranne che per un campo: il Titolo. Pertanto, la necessità del codice.
L'elenco seguente mostra il flusso del programma.
- Controlla se l'utente ha selezionato un record da copiare. Verrà visualizzato un messaggio di errore se l'utente fa clic sul pulsante subito dopo aver fatto clic sul pulsante Aggiungi nuovo record, annullando l'ID.
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- Ottieni l'ID o la chiave primaria del record corrente e assegnalo come valore per il IDcorrente Questo sarà utilizzato come base per i valori da copiare.
currentID = BookID
- Aggiungi un nuovo record.
DoCmd.GoToRecord record:=acNewRec
- Imposta i valori per determinati campi in base a IDcorrente Qui è dove i dati vengono copiati dal record selezionato.
'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID)
Author = DLookup("Author", "Books", "BookID=" & currentID)
Country = DLookup("Country", "Books", "BookID=" & currentID)
Language = DLookup("Language", "Books", "BookID=" & currentID)
Genre = DLookup("Genre", "Books", "BookID=" & currentID)
Publisher = DLookup("Publisher", "Books", "BookID=" & currentID)
- Imposta lo stato attivo sul campo che è most probabile che venga modificato per la prima volta dall'utente. Ciò migliora l'esperienza dell'utente in quanto elimina la necessità per l'utente di selezionare manualmente il campo che deve ancora essere aggiornato.
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
Ripara un database corrotto
Se per una sfortunata ragione un giorno ti svegli senza poter aprire il tuo database, puoi provare strumenti di terze parti che funzionano Riparazione di accesso. Funziona a meraviglia.
Introduzione dell'autore:
Jayme Stack è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui ripristino sql ed eccellere prodotti software di recupero. Per maggiori informazioni visita www.datanumen.com
