Разделените формуляри в Access са изключително полезни. За съжаление, те не работят, когато ги поставите във формуляр за навигация. Научете как можете да създадете VBA функция, която ще симулира функционалностите на разделен формуляр на Access и ще я накара да работи дори във формуляр за навигация.
Разделеният формуляр ви позволява да имате два изгледа на вашите записи едновременно – изглед на формуляр и изглед на лист с данни. Позволява ви да имате преглед на всичките си записи, като в същото време ви дава възможност да ги преглеждате и редактирате един по един.
За съжаление, разделените формуляри няма да работят, когато ги поставите във формуляр за навигация – нещо, което ме озадачава. Добре, че има заобиколно решение за това. Използвайки VBA, можете да създадете своя собствена функция, която ще симулира разделена форма на Access. Просто следвайте стъпките по-долу.
Свали сега
Ако искате да започнете да използвате функцията възможно най-скоро, можете да:
Изтеглете примерната база данни с VBA кодове сега
В противен случай, ако искате да си направите сам, можете да прочетете съдържанието по-долу.
Стъпки за създаване на ваш собствен разделен формуляр в Access с помощта на VBA
1. Отворете вашия разделен формуляр и актуализирайте изгледа по подразбиране до Единичен формуляр. 
- Отворете вашата разделена форма.
- Докато сте в изглед за дизайн, изберете формата.
- Отидете на Лист със свойства (ALT + Enter) > Раздел Формуляр.
- Променете изгледа по подразбиране на: Единичен формуляр.
- Затворете формата и запазете.
2. Създайте копие на формуляра. Това ще служи като изглед на листа с данни.
- Отидете до навигационния панел.
- Щракнете с десния бутон върху вашия формуляр и изберете Копиране.
- Щракнете с десния бутон върху празно място в навигационния панел и изберете Поставяне.
- Променете името на формуляра. Добавете го с „_Datasheet“.
Пример:
- Форма: Членове
- Копие на формуляра: Members_Datasheet
3. Отворете формуляра за лист с данни и актуализирайте неговите свойства на изглед на формуляр.
- Отворете формуляра за лист с данни.
- Докато сте в изглед за дизайн, изберете формата.
- Отидете на Лист със свойства > раздел Формуляр.
- Актуализирайте следните свойства:
- Изглед по подразбиране: Техн
- Разрешаване на изглед на лист с данни: Да
- Разрешаване на изглед на формуляр: Не
- Затворете формата и запазете.
4. Отворете отново основния формуляр и добавете формуляра за лист с данни като подформуляр.
- Отворете основния формуляр (този, който беше копиран) в изглед за проектиране.
- Добавете подформуляр.
- Отидете в менюто Дизайн. Изберете Подформуляр/Подотчет.
- Щракнете върху областта с подробности на формуляра.
- Ще се появи съветникът за подформуляр.
- Отидете в менюто Дизайн. Изберете Подформуляр/Подотчет.
1. Кликнете върху „Използване на съществуващ формуляр“.
2. Изберете вашия формуляр за лист с данни.
3. Щракнете върху Напред.
4. Изберете „Дефиниране на моя собствен“.
5.Щракнете върху Готово.
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
- След като копирате кода, заменете всички екземпляри на думата Членове_лист с данни с действителното име на вашия формуляр за лист с данни.
- Когато сте готови, изберете вашия формуляр за лист с данни от менюто на проекта и копирайте кода по-долу.
'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 Editor.
Сега можете да добавите своя собствена разделена форма във формата за навигация. Опитай го!
Коригиране на повредена база данни за достъп (.accdb)
Може да има много причини, поради които база данни на Access се повреди. За съжаление, ние нямаме контрол върху повечето от тях. Ако това ви се случи, не забравяйте, че все още има начин да я възстановите. DataNumen Inc. създаде софтуер, който изпълнява поправка на accdb, Виж това.
Въведение на автора:
Jayme Stack е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително sql възстановяване и excel софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com



