Как быстро дублировать записи в вашем доступе

Поделись сейчас:

Узнайте, как создать функцию VBA, позволяющую копировать определенные данные из предыдущих записей одним нажатием кнопки. Не нужно многократно вводить одни и те же вещи.

Вы когда-нибудь сталкивались с тем, что вам нужно ввести новую запись в Access, которая имеет точно такой же набор значений, что и предыдущая запись, за исключением одного поля? Это может быть утомительно, верно? В этом руководстве вы узнаете, как создать функцию, которая одним нажатием кнопки может копировать определенные значения предыдущей записи, экономя ваше время на повторном вводе. Просто следуйте инструкциям ниже.

Скачать сейчас

Если вы хотите сtart использовать функцию как можно скорее, то вы можете:

Загрузите пример базы данных с кодами VBA прямо сейчас

В противном случае, если вы хотите сделать своими руками, вы можете прочитать содержимое ниже.

Действия по добавлению функции «Создать копию записи» в Access

  1. Откройте форму в режиме конструктора.Откройте форму в представлении «Дизайн»
  2. Добавьте командную кнопку. Пропустите мастер командной кнопки.
  3. Добавьте По щелчку событие на кнопку.Добавить событие нажатия на кнопку
  • В режиме конструктора нажмите кнопку.
  • Откройте лист свойств (ALT + Enter)
  • Перейдите на вкладку «Событие» > «По клику» >…
  • Когда Выберите конструктор всплывающее меню, выберите Code Builder.
  • Нажмите кнопку ОК.
  • Это откроет редактор VBA.
    1. Скопируйте следующий код и измените его в соответствии с вашими потребностями. Используйте комментарии в качестве руководства.
    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
  1. Теперь проверьте код, если он работает.

Код объяснен

Приведенный выше код использовался для базы данных книжного магазина. Из-за серии книг бывают случаи, когда все сведения о книге (например, автор, страна, язык и т. д.) совпадают, за исключением одного поля — названия. Таким образом, потребность в коде.

В списке ниже показан ход программы.

  1. Проверьте, выбрал ли пользователь запись для копирования. Сообщение об ошибке появится, если пользователь нажмет кнопку сразу после нажатия кнопки «Добавить новую запись», что сделает идентификатор нулевым.
If IsNull(BookID) Then
     MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation
     Exit Sub
End If
  1. Получите идентификатор или первичный ключ текущей записи и назначьте его в качестве значения для текущийID Это будет использоваться в качестве основы для значений, которые будут скопированы.
currentID = BookID
  1. Добавить новую запись.
DoCmd.GoToRecord record:=acNewRec
  1. Установите значения для определенных полей на основе текущий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)
  1. Установить фокус на поле 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

Поделись сейчас:

Комментарии закрыты.