Как создать свою собственную разделенную форму в Access с помощью VBA

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

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

Разделенная форма позволяет одновременно иметь два представления ваших записей — представление формы и представление таблицы. Это позволяет вам иметь обзор всех ваших записей, в то же время предоставляя вам возможность просматривать и редактировать их одну за другой.

К сожалению, разделенные формы не будут работать, если вы поместите их в форму навигации, что меня сбивает с толку. Хорошо, что есть обходной путь для этого. Используя VBA, вы можете создать свою собственную функцию, которая будет имитировать разделенную форму Access. Просто следуйте инструкциям ниже.

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

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

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

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

Шаги по созданию собственной разделенной формы в Access с помощью VBA

1. Откройте разделенную форму и обновите представление по умолчанию до единой формы. Откройте разделенную форму и обновите представление по умолчанию до единой формы

  1. Откройте разделенную форму.
  2. В режиме конструктора выберите форму.
  3. Перейдите на страницу свойств (ALT + Enter) > вкладка «Форма».
  4. Измените вид по умолчанию на: Единая форма.
  5. Закройте форму и сохраните.

2. Создайте копию формы. Это будет служить представлением таблицы.

  1. Перейдите на панель навигации.
  2. Щелкните правой кнопкой мыши форму и выберите «Копировать».
  3. Щелкните правой кнопкой мыши пустую область на панели навигации и выберите «Вставить».
  4. Измените имя формы. Добавьте к нему «_Datasheet».

Пример:

  • Форма: Члены
  • Копия формы: Members_Datasheet

3. Откройте форму таблицы данных и обновите свойства представления формы.

  1. Откройте форму таблицы данных.
  2. В режиме конструктора выберите форму.
  3. Перейдите на страницу свойств > вкладка «Форма».
  4. Обновите следующие свойства:
    • Вид по умолчанию: Даташит
    • Разрешить просмотр таблицы: Да
    • Разрешить просмотр формы: Нет
  5. Закройте форму и сохраните.

4. Снова откройте основную форму и добавьте форму таблицы данных в качестве подчиненной формы.

  1. Откройте основную форму (тот, который был скопирован) в режиме конструктора.
  2. Добавьте подчиненную форму.
    • Перейдите в меню «Дизайн». Выберите Подформа/Подотчет.Выберите подчиненную форму
    • Нажмите на область сведений формы.
    • Появится мастер подчиненных форм.Мастер подформ

1. Нажмите «Использовать существующую форму».

2. Выберите форму таблицы данных.

3.Щелкните Next.Выберите «Определить мой собственный»

4.Выберите «Определить мой собственный».

5.Click Finish.

3. Форма таблицы данных теперь является подчиненной формой вашей основной формы. Отрегулируйте его до желаемого размера и положения.

5. Наконец, добавьте код.

  1. Откройте редактор VBA (ALT + F11).
  2. Выберите основную форму и вставьте следующий код.Выберите основную форму и вставьте код
'MAIN FORM
Option Explicit

Private Sub Form_AfterUpdate()
   Me.Members_Datasheet.Requery
End Sub

Private Sub Form_Current()
   If Me.NewRecord Then
     Me.Members_Datasheet.Form.Recordset.AddNew
   Else
     Me.Members_Datasheet.Requery
   End If
End Sub
  1. После копирования кода замените все экземпляры слова Members_Datasheet с фактическим названием вашей формы таблицы данных.
  2. Когда закончите, выберите форму таблицы данных в меню «Проект» и скопируйте приведенный ниже код.
'SUBFORM/DATASHEET FORM
Option Explicit

Private Sub Form_AfterUpdate()
   Me.Parent.Form.Requery
End Sub

Private Sub Form_Current()

  Dim pk_field As String, pk_tbox As Control
  Dim primaryKey As String, strSearch As String
 
  Set pk_tbox = Me.Member_ID 'textbox containing primary key *
  pk_field = "Member_ID" 'primary key field name *

  primaryKey = Nz(pk_tbox.Value, 0) 'change value to 0 if null
  pk_field = "[" & pk_field & "]" 'enclose field name with brackets
 
  If primaryKey <> 0 Then 'if not null (or not a new record)
    strSearch = pk_field & "=" & primaryKey
    Me.Parent.Recordset.FindFirst strSearch
  Else
     Me.Parent.Form.Recordset.AddNew
  End If

End Sub
  1. Обновите значения для следующих переменных:
  • pk_tbox – относится к текстовому полю, содержащему первичный ключ.
  • pk_field – относится к полю первичного ключа источника записи.

У каждого из них есть звездочка (*) в разделе комментариев, чтобы вы могли легко их найти.

  1. Когда закончите, сохраните изменения (CTRL + S) и закройте редактор VBA.

Теперь вы можете добавить свою собственную разделенную форму в форму навигации. Попробуйте!

Исправление поврежденной базы данных доступа (.accdb)

Может быть много причин, по которым база данных Access становится поврежденной. К сожалению, у нас нет контроля над most из них. Если это произойдет с вами, помните, что есть еще способ восстановить его. DataNumen Inc. создала программное обеспечение, которое выполняет ремонт аккдб, Проверьте это.

Об авторе:

Джейми Стэк — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая sql восстановление и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com

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

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