Lær, hvordan du kan oprette en VBA-funktion, der giver dig mulighed for at kopiere visse data fra tidligere poster med blot et klik på en knap. Det er ikke nødvendigt at skrive de samme ting gentagne gange.
Har du nogensinde haft en oplevelse, hvor du har brug for at indtaste en ny post i Access, der har nøjagtig det samme sæt værdier som en tidligere post, bortset fra ét felt? Det kan være trættende, ikke? Denne vejledning vil lære dig, hvordan du kan oprette en funktion, der med et klik på en knap kan kopiere visse værdier fra en tidligere post – hvilket sparer dig for tid fra genindtastning. Bare følg nedenstående trin.
Hent nu
Hvis du vil begynde at bruge funktionen så hurtigt som muligt, kan du:
Download eksempeldatabasen med VBA-koder nu
Ellers kan du læse indholdet nedenfor, hvis du vil gøre det selv.
Trin til at tilføje en 'Opret postkopi'-funktionalitet i Access
- Åbn din formular i designvisning.

- Tilføj en kommandoknap. Spring kommandoknap-guiden over.
- Tilføj en Ved klik begivenhed til knappen.
- Mens du er i designvisning, skal du vælge knappen.
- Åbn ejendomsarket (ALT + Enter)
- Gå til fanen Begivenhed > Ved klik > …
- Når Vælg Builder menuen dukker op, vælg Code Builder.
- Klik på OK.
- Dette åbner VBA Editor.
-
- Kopier følgende kode og modificer den, så den passer til dine behov. Brug kommentarerne som guide.
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 - Test nu koden om den virker.
Kode forklaret
Ovenstående kode blev brugt til en boghandels database. På grund af bogserier er der tilfælde, hvor alle bogdetaljer (f.eks. forfatter, land, sprog osv.) er de samme bortset fra ét felt – titlen. Således behovet for koden.
Listen nedenfor viser programforløbet.
- Tjek, om brugeren har valgt en post, der skal kopieres. En fejlmeddelelse vil dukke op, hvis brugeren klikker på knappen lige efter at have klikket på knappen Tilføj ny post - hvilket gør ID'et nul.
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- Hent ID eller primærnøgle for den aktuelle post, og tildel den som værdi for nuværende ID Dette vil blive brugt som grundlag for de værdier, der skal kopieres.
currentID = BookID
- Tilføj en ny rekord.
DoCmd.GoToRecord record:=acNewRec
- Indstil værdier for visse felter baseret på nuværende ID Det er her, data kopieres fra den valgte post.
'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)
- Sæt fokus på det felt, der højst sandsynligt vil blive redigeret af brugeren først. Dette forbedrer brugeroplevelsen, da det eliminerer behovet for manuelt at vælge det felt, der stadig skal opdateres.
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
Reparer en korrupt database
Hvis du af en uheldig grund vågner en dag ude af stand til at åbne din database, kan du prøve tredjepartsværktøjer, der udfører Adgangsreparation. Det gør underværker.
Forfatter Introduktion:
Jayme Stack er ekspert i datagendannelse i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder sql opsving og excel-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com
