MS Access, реализующий поведение, похожее на гиперссылку, для переключения записей между формами. - PullRequest
0 голосов
/ 24 мая 2011

В настоящее время я работаю с базой данных, которая требует следующих функций:

Например, для конкретного проекта у меня есть ряд структур, принадлежащих этому проекту, которые отображаются в виде таблицы данных в форме проекта. Я пытаюсь разрешить пользователю дважды щелкнуть, чтобы перейти к той конкретной структуре, которая отображается в другой форме. В настоящее время я использую фильтры для реализации этого поведения, однако это приводит к тому, что фильтр остается включенным, и когда я вручную отключаю фильтр, форма, на которую я переключаюсь, возвращается к первой записи.

Я использую текущий код на листе данных:

Private Sub struct_name_DblClick(Cancel As Integer)

LookupValue = Me.struct_ID
Form_frm_control.pg_structure.SetFocus
Form_frm_control.subform_structure.Form.Filter = "struct_ID = " & LookupValue
Form_frm_control.subform_structure.Form.FilterOn = True

End Sub

Любая помощь будет принята с благодарностью. Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2011

Все зависит от того, что вам нужно сделать.

Если вы хотите отобразить все записи и перейти к выбранной записи, то вы можете использовать навигацию по закладкам:

  With Forms!MyOtherForm
    .RecordsetClone.FindFirst "struct_ID = " & Me!struct_ID
    If Not .RecordsetClone.NoMatch Then
       If .Dirty Then
          .Dirty = False
       End If
       .Bookmark = .RecordsetClone.Bookmark
    End If
  End With

Предполагается, что другая форма открыта со всеми загруженными записями.

Другой подход к этой проблеме, который я считаю более полезным для таких всплывающих ситуаций, заключается в том, чтобы просто открыть другую форму в виде диалога и потребовать ее закрытия перед возвратом в вызывающий контекст. В этом случае вы бы сделали это:

  DoCmd.OpenForm "MyOtherForm", , , "struct_ID = " & Me!struct_ID, , acDialog

Затем вам придется закрыть другую форму, чтобы вернуться в исходный контекст.

Вы можете подумать, что при большом количестве записей это было бы неэффективно, но на самом деле это очень быстро, поскольку эта операция сильно оптимизирована в Access (более того, фактически не фильтруя уже открытую форму).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...