В форме доступа, как вернуться к предыдущей записи после запроса - PullRequest
2 голосов
/ 11 марта 2010

Это должно быть легко. Эта форма фильтруется по [Отклонено] = "N". Когда пользователь нажимает кнопку «Отклонить», поле [Отклонено] меняется на «Y». После запроса форма должна затем вернуться в ту же строку, где ранее находился пользователь.

Private Sub DismissButton_Click()
   Me!Dismissed = "Y"
   MsgBox "Dismissed!", vbOKOnly
   Dim GoBackToThisRecord As Integer
   GobacktothisRecord = Me.CurrentRecord
   Me.Requery
   Set Me.CurrentRecord=GoBackToThisRecord
End Sub

Однако, даже несмотря на то, что встроенные файлы справки говорят, что CurrentRecord является свойством чтения / записи, в последней строке я получаю сообщение об ошибке «Недопустимое использование свойства».

После установки [Dismiss] = "Y" и запроса формы, как я могу вернуть пользователя в его / ее предыдущее местоположение в форме?

Ответы [ 4 ]

2 голосов
/ 12 марта 2010

Я не понимаю, как может работать ваше решение, если форма отфильтрована до значения, которому отредактированная запись больше не соответствует - если вы отфильтровываете по [Dismissed] = "N", то изменяете поле Dismissed текущей записи значение Y должно привести к тому, что запрашиваемая форма исключит только что обновленную запись.

Кроме того, я бы никогда не сделал это так, как вы, поскольку Me.CurrentRecord возвращает число, представляющее позицию в записи. Поскольку запрос может привести к изменению количества записей (например, кто-то другой редактирует или добавляет или удаляет запись, в результате чего она включается / исключается из набора записей формы) и изменяется положение искомой записи, я бы использовал ПК вместо.

  Dim lngPK as Long

  lngPK = Me!MyPKID
  Me.Requery
  With Me.RecordsetClone
    .FindFirst "[MyPKID]=" & lngPK
    If Not .NoMatch Then
       If Me.Dirty Then
          Me.Dirty = False
       End If
       Me.Bookmark = .Bookmark
    End If
  End With

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

1 голос
/ 09 декабря 2015

Я использую эту функцию:

Public Sub RequeryFormAndKeepCurrentlySelectedRecord(f As Form)
Dim Position As Long
  Position = f.CurrentRecord
  f.Requery
  If Position > 1 Then
    f.Recordset.move Position - 1
  End If
End Sub
1 голос
/ 16 ноября 2011

Правильный способ перехода к предыдущей записи, будь то новая или нет, это

Me.Recordset.Move GoBackToThisRecord -1
1 голос
/ 11 марта 2010

Nevermind. Исправил это сам. Последняя строка теперь:

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