Sužinokite, kaip galite sukurti VBA funkciją, leidžiančią nukopijuoti tam tikrus duomenis iš ankstesnių įrašų vienu mygtuko paspaudimu. Nereikia kartoti tų pačių dalykų.
Ar kada nors teko patirti, kad programoje „Access“ reikia įvesti naują įrašą, kurio reikšmių rinkinys lygiai toks pat, kaip ir ankstesniame įraše, išskyrus vieną lauką? Tai gali būti nuobodu, tiesa? Šioje pamokoje sužinosite, kaip sukurti funkciją, kurią naudodami spustelėję mygtuką galite nukopijuoti tam tikras ankstesnio įrašo reikšmes – taip sutaupysite laiko, kai nereikės įvesti iš naujo. Tiesiog atlikite toliau nurodytus veiksmus.
Atsisiųsti dabar
Jei norite kuo greičiau pradėti naudoti šią funkciją, galite:
Atsisiųskite pavyzdinę duomenų bazę su VBA kodais dabar
Kitu atveju, jei norite pasidaryk pats, galite perskaityti toliau pateiktą turinį.
„Access“ funkcijos „Sukurti įrašo kopiją“ pridėjimo veiksmai
- Atidarykite formą dizaino rodinyje.

- Pridėkite komandos mygtuką. Praleiskite komandų mygtuko vedlį.
- Pridėti a Paspaudus įvykis prie mygtuko.
- Dizaino rodinyje pasirinkite mygtuką.
- Atidarykite ypatybių lapą (ALT + Enter)
- Eikite į skirtuką Įvykis > Spustelėjus >…
- Kai Pasirinkite Builder meniu, pasirinkite Code Builder.
- Spustelėkite OK (gerai).
- Tai atidarys VBA redaktorių.
-
- Nukopijuokite šį kodą ir pakeiskite jį pagal savo poreikius. Naudokite komentarus kaip vadovą.
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 - Dabar patikrinkite kodą, ar jis veikia.
Kodas paaiškintas
Aukščiau pateiktas kodas buvo naudojamas knygyno duomenų bazei. Dėl knygų serijų pasitaiko atvejų, kai visa knygos informacija (pvz., autorius, šalis, kalba ir kt.) yra ta pati, išskyrus vieną lauką – pavadinimą. Taigi, kodo poreikis.
Toliau pateiktame sąraše parodyta programos eiga.
- Patikrinkite, ar vartotojas pasirinko kopijuoti įrašą. Jei vartotojas spustelėja mygtuką iškart po to, kai spustelėja mygtuką Pridėti naują įrašą, pasirodys klaidos pranešimas, todėl ID taps niekinis.
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- Gaukite dabartinio įrašo ID arba pirminį raktą ir priskirkite jį kaip reikšmę dabartinis ID Tai bus naudojama kaip kopijuojamų verčių pagrindas.
currentID = BookID
- Pridėti naują įrašą.
DoCmd.GoToRecord record:=acNewRec
- Nustatykite tam tikrų laukų reikšmes pagal dabartinis ID Čia duomenys nukopijuojami iš pasirinkto įrašo.
'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)
- Nustatykite fokusą į lauką, kurį vartotojas greičiausiai redaguos pirmiausia. Tai pagerina vartotojo patirtį, nes jam nereikia rankiniu būdu pasirinkti lauko, kurį dar reikia atnaujinti.
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
Pataisykite sugadintą duomenų bazę
Jei dėl apgailėtinos priežasties vieną dieną atsibundate negalėdami atidaryti duomenų bazės, galite išbandyti trečiųjų šalių įrankius, kurie Prieigos remontas. Tai daro stebuklus.
Autoriaus įvadas:
Jayme'as Stackas yra duomenų atkūrimo ekspertas DataNumen, Inc., kuri yra pasaulyje duomenų atkūrimo technologijų lyderė, įskaitant sql atkūrimas ir Excel atkūrimo programinės įrangos produktai. Norėdami gauti daugiau informacijos, apsilankykite WWW.datanumen.com
