Разделенные формы в Access чрезвычайно полезны. К сожалению, они не работают, когда вы размещаете их внутри навигационной формы. Узнайте, как создать функцию VBA, которая будет имитировать функции разделенной формы Access и заставить ее работать даже внутри формы навигации.
Разделенная форма позволяет одновременно иметь два представления ваших записей — представление формы и представление таблицы. Это позволяет вам иметь обзор всех ваших записей, в то же время предоставляя вам возможность просматривать и редактировать их одну за другой.
К сожалению, разделенные формы не будут работать, если вы поместите их в форму навигации, что меня сбивает с толку. Хорошо, что есть обходной путь для этого. Используя VBA, вы можете создать свою собственную функцию, которая будет имитировать разделенную форму Access. Просто следуйте инструкциям ниже.
Скачать сейчас
Если вы хотите сtart использовать функцию как можно скорее, то вы можете:
Загрузите пример базы данных с кодами VBA прямо сейчас
В противном случае, если вы хотите сделать своими руками, вы можете прочитать содержимое ниже.
Шаги по созданию собственной разделенной формы в Access с помощью VBA
1. Откройте разделенную форму и обновите представление по умолчанию до единой формы. 
- Откройте разделенную форму.
- В режиме конструктора выберите форму.
- Перейдите на страницу свойств (ALT + Enter) > вкладка «Форма».
- Измените вид по умолчанию на: Единая форма.
- Закройте форму и сохраните.
2. Создайте копию формы. Это будет служить представлением таблицы.
- Перейдите на панель навигации.
- Щелкните правой кнопкой мыши форму и выберите «Копировать».
- Щелкните правой кнопкой мыши пустую область на панели навигации и выберите «Вставить».
- Измените имя формы. Добавьте к нему «_Datasheet».
Пример:
- Форма: Члены
- Копия формы: Members_Datasheet
3. Откройте форму таблицы данных и обновите свойства представления формы.
- Откройте форму таблицы данных.
- В режиме конструктора выберите форму.
- Перейдите на страницу свойств > вкладка «Форма».
- Обновите следующие свойства:
- Вид по умолчанию: Даташит
- Разрешить просмотр таблицы: Да
- Разрешить просмотр формы: Нет
- Закройте форму и сохраните.
4. Снова откройте основную форму и добавьте форму таблицы данных в качестве подчиненной формы.
- Откройте основную форму (тот, который был скопирован) в режиме конструктора.
- Добавьте подчиненную форму.
- Перейдите в меню «Дизайн». Выберите Подформа/Подотчет.
- Нажмите на область сведений формы.
- Появится мастер подчиненных форм.
- Перейдите в меню «Дизайн». Выберите Подформа/Подотчет.
1. Нажмите «Использовать существующую форму».
2. Выберите форму таблицы данных.
3.Щелкните Next.
4.Выберите «Определить мой собственный».
5.Click Finish.
3. Форма таблицы данных теперь является подчиненной формой вашей основной формы. Отрегулируйте его до желаемого размера и положения.
5. Наконец, добавьте код.
- Откройте редактор VBA (ALT + F11).
- Выберите основную форму и вставьте следующий код.
'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
- После копирования кода замените все экземпляры слова Members_Datasheet с фактическим названием вашей формы таблицы данных.
- Когда закончите, выберите форму таблицы данных в меню «Проект» и скопируйте приведенный ниже код.
'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
- Обновите значения для следующих переменных:
- pk_tbox – относится к текстовому полю, содержащему первичный ключ.
- pk_field – относится к полю первичного ключа источника записи.
У каждого из них есть звездочка (*) в разделе комментариев, чтобы вы могли легко их найти.
- Когда закончите, сохраните изменения (CTRL + S) и закройте редактор VBA.
Теперь вы можете добавить свою собственную разделенную форму в форму навигации. Попробуйте!
Исправление поврежденной базы данных доступа (.accdb)
Может быть много причин, по которым база данных Access становится поврежденной. К сожалению, у нас нет контроля над most из них. Если это произойдет с вами, помните, что есть еще способ восстановить его. DataNumen Inc. создала программное обеспечение, которое выполняет ремонт аккдб, Проверьте это.
Об авторе:
Джейми Стэк — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая sql восстановление и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com



