Я не проверял шаблон контактов A2010, но я предполагаю, что у вас есть список результатов, и вы выбираете один из них и нажимаете командную кнопку, чтобы открыть сведения.
Вероятно, эта командная кнопка имеет кодчто-то вроде этого:
DoCmd.OpenForm "frmContactDetails", , , "[ContactID]=" & Me!ContactID
..., который открывает форму и фильтрует ее в одну запись.
Чтобы иметь навигационный набор записей, вам нужно, чтобы формабыть отфильтрованы к тому же набору записей, который отображается в списке результатов поиска, и затем вам нужно будет перемещаться среди них.Для этого вам нужно будет установить критерии для тех же критериев, которые отфильтровывали список результатов, а затем перейти к текущей выбранной записи.Я не знаю, каковы критерии, поэтому я просто собираюсь представить его с помощью переменной strCriteria
, но требуется, чтобы он был отформатирован как предложение SQL WHERE без слова "WHERE":
DoCmd.OpenForm "frmContactDetails", , , strCriteria
With Forms!frmContactDetails
.RecordsetClone.FindFirst "[ContactID]=" & Me!ContactID
If Not .NoMatch Then
.Bookmark = .RecordsetClone.Bookmark
End If
End WIth
Откроется форма с тем же набором записей, затем перейдет к форме с ContactID записи, которая была выбрана в результатах, когда вы нажали командную кнопку, чтобы увидеть подробности.Как только эта форма сведений загружается с этим набором записей, вы можете переходить к следующим или предыдущим записям по своему усмотрению.
Также возможно открыть форму сведений и назначить набор записей формы клоном.Recordset формы результатов, но я никогда не пробовал это.В этом случае это будет что-то вроде (непроверенный код, просто гадание, как это будет сделано):
DoCmd.OpenForm "frmContactDetails", , , , , acHidden
With Forms!frmContactDetails
.Recordset = Me.Recordset.Clone
.RecordsetClone.FindFirst "[ContactID]=" & Me!ContactID
If Not .NoMatch Then
.Bookmark = .RecordsetClone.Bookmark
End If
End WIth
Еще одна вещь, которую следует учитывать, - это вообще не иметь всплывающую форму, а использовать разделенную формучто-то, что было представлено в A2007, и что у меня еще не было возможности использовать (нет клиентов, которые полностью переключились на A2007 / 2010).Он имеет вид списка и подробный вид в той же форме.
Старомодным способом реализации одной и той же вещи было использование двух подчиненных форм в несвязанной форме, верхняя форма - список результатов, иверхняя форма - это подробная форма, привязанная к текущей записи верхней формы.Никакого кода не требуется, вы просто устанавливаете свойства LinkChild и LinkMaster формы детали, как это:
LinkMaster: ListForm.Form!ContactID
LinkChild: ContactID
Этот подход и форма разделения избегают всплывающую форму, которую я считаю несколько враждебной для пользователя (нужно использовать с осторожностью).
Какой подход вы используете, зависит от того, как именно ваше приложение подходит друг к другу.