Научете как можете да създадете VBA функция, която ви позволява да копирате определени данни от предишни записи само с едно щракване на бутон. Няма нужда многократно да пишете едни и същи неща.
Имали ли сте опит, при който трябва да въведете нов запис в Access, който има точно същия набор от стойности с предишен запис, с изключение на едно поле? Може да е досадно, нали? Този урок ще ви научи как можете да създадете функция, която с едно щракване на бутон може да копира определени стойности на предишен запис - спестявайки ви време от повторно въвеждане. Просто следвайте стъпките по-долу.
Свали сега
Ако искате да start, за да използвате функцията възможно най-скоро, тогава можете:
Изтеглете примерната база данни с VBA кодове сега
В противен случай, ако искате да си направите сам, можете да прочетете съдържанието по-долу.
Стъпки за добавяне на функционалност „Създаване на копие на запис“ в Access
- Отворете формуляра си в изглед за дизайн.
- Добавете команден бутон. Пропуснете съветника на командния бутон.
- Добавете При щракване събитие до бутона.
- Докато сте в изглед за дизайн, изберете бутона.
- Отворете листа със свойства (ALT + Enter)
- Отидете в раздела Събитие> При щракване> ...
- Когато Изберете Builder изскача менюто, изберете Code Builder.
- Кликнете върху OK.
- Това ще отвори редактора на VBA.
-
- Копирайте следния код и го модифицирайте според вашите нужди. Използвайте коментарите като ръководство.
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 - Сега тествайте кода, ако работи.
Обяснен код
Горният код е използван за базата данни на книжарница. Поради сериите книги има случаи, при които всички подробности за книгата (напр. Автор, държава, език и др.) Са еднакви, с изключение на едно поле - заглавието. По този начин, необходимостта от кода.
Списъкът по-долу показва програмния поток.
- Проверете дали потребителят е избрал запис за копиране. Ще се появи съобщение за грешка, ако потребителят щракне върху бутона веднага след щракване върху бутона Добавяне на нов запис - правейки идентификатора нулев
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- Вземете ID или първичен ключ на текущия запис и го присвойте като стойност за currentID Това ще се използва като основа за стойностите, които ще бъдат копирани.
currentID = BookID
- Добавете нов запис.
DoCmd.GoToRecord record:=acNewRec
- Задайте стойности за определени полета на базата на currentID Тук се копират данни от избрания запис.
'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)
- Задайте фокус на поле, което е most вероятно ще бъде първо редактирано от потребителя. Това подобрява потребителското изживяване, тъй като премахва необходимостта потребителят ръчно да избира полето, което все още трябва да бъде актуализирано.
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
Поправете повредена база данни
Ако по злощастна причина един ден се събудите, неспособни да отворите базата си данни, можете да опитате инструменти на трети страни, които работят Достъп до ремонт. Той прави чудеса.
Въведение на автора:
Jayme Stack е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително sql възстановяване и excel софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com

