Как бързо да дублирате записи във вашия достъп

Споделете сега:

Научете как можете да създадете VBA функция, която ви позволява да копирате определени данни от предишни записи само с едно щракване на бутон. Няма нужда многократно да пишете едни и същи неща.

Имали ли сте опит, при който трябва да въведете нов запис в Access, който има точно същия набор от стойности с предишен запис, с изключение на едно поле? Може да е досадно, нали? Този урок ще ви научи как можете да създадете функция, която с едно щракване на бутон може да копира определени стойности на предишен запис - спестявайки ви време от повторно въвеждане. Просто следвайте стъпките по-долу.

Свали сега

Ако искате да start, за да използвате функцията възможно най-скоро, тогава можете:

Изтеглете примерната база данни с VBA кодове сега

В противен случай, ако искате да си направите сам, можете да прочетете съдържанието по-долу.

Стъпки за добавяне на функционалност „Създаване на копие на запис“ в Access

  1. Отворете формуляра си в изглед за дизайн.Отворете формуляра си в изглед за дизайн
  2. Добавете команден бутон. Пропуснете съветника на командния бутон.
  3. Добавете При щракване събитие до бутона.Добавете събитие при щракване към бутона
  • Докато сте в изглед за дизайн, изберете бутона.
  • Отворете листа със свойства (ALT + Enter)
  • Отидете в раздела Събитие> При щракване> ...
  • Когато Изберете Builder изскача менюто, изберете Code Builder.
  • Кликнете върху OK.
  • Това ще отвори редактора на 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 Това ще се използва като основа за стойностите, които ще бъдат копирани.
currentID = BookID
  1. Добавете нов запис.
DoCmd.GoToRecord record:=acNewRec
  1. Задайте стойности за определени полета на базата на 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)
  1. Задайте фокус на поле, което е 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

Споделете сега:

Коментарите са забранени.