Узнайте, как создать функцию VBA, позволяющую копировать определенные данные из предыдущих записей одним нажатием кнопки. Не нужно многократно вводить одни и те же вещи.
Вы когда-нибудь сталкивались с тем, что вам нужно ввести новую запись в Access, которая имеет точно такой же набор значений, что и предыдущая запись, за исключением одного поля? Это может быть утомительно, верно? В этом руководстве вы узнаете, как создать функцию, которая одним нажатием кнопки может копировать определенные значения предыдущей записи, экономя ваше время на повторном вводе. Просто следуйте инструкциям ниже.
Скачать сейчас
Если вы хотите сtart использовать функцию как можно скорее, то вы можете:
Загрузите пример базы данных с кодами VBA прямо сейчас
В противном случае, если вы хотите сделать своими руками, вы можете прочитать содержимое ниже.
Действия по добавлению функции «Создать копию записи» в Access
- Откройте форму в режиме конструктора.
- Добавьте командную кнопку. Пропустите мастер командной кнопки.
- Добавьте По щелчку событие на кнопку.
- В режиме конструктора нажмите кнопку.
- Откройте лист свойств (ALT + Enter)
- Перейдите на вкладку «Событие» > «По клику» >…
- Когда Выберите конструктор всплывающее меню, выберите Code Builder.
- Нажмите кнопку ОК.
- Это откроет редактор 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 = BookID
- Добавить новую запись.
DoCmd.GoToRecord record:=acNewRec
- Установите значения для определенных полей на основе текущийID Здесь данные копируются из выбранной записи.
'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
Восстановить поврежденную базу данных
Если по какой-то неблагоприятной причине однажды вы проснетесь и не сможете открыть свою базу данных, вы можете попробовать сторонние инструменты, которые выполняют Доступ к ремонту. Это творит чудеса.
Об авторе:
Джейми Стэк — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая sql восстановление и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com

