VBA, MS Access MS Access в примерах

Переходы по записям формы (на следующую - предыдущую - новую…)


Код из примера:

Private Sub cmdGoNext_Click()
    Form_Move "Next" 'На ... следюющую
End Sub

Private Sub cmdGoPrevious_Click()
    Form_Move "Previous" 'На ... понятно
End Sub
Private Sub cmdGoToFirst_Click()
    Form_Move "First" 'На первую
End Sub

Private Sub cmdGoToLast_Click()
    Form_Move "Last" 'На последнюю
End Sub

Private Sub cmdGoToNew_Click()
    Form_Move "New" 'На новую
End Sub

Private Sub Form_Move(sDirection As String)
'Переходы по записям формы по аргументу: sDirection
'--------------------------------------------------------------------------
'https://msdn.microsoft.com/en-us/library/office/jj250039.aspx
'--------------------------------------------------------------------------
    On Error Resume Next
    Select Case sDirection
        Case "First"    'На первую ...
            Me.Recordset.MoveFirst
        Case "Previous" 'На предидущ ...
            Me.Recordset.MovePrevious
        Case "Next"     'На следюющую
            Me.Recordset.MoveNext
        Case "Last"     'На последнюю
            Me.Recordset.MoveLast
        Case "New"      'На новую
            Me.Recordset.AddNew
            'DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    End Select
    Err.Clear
End Sub

Private Sub Form_Current()
Dim l&, bEnabled As Boolean
'Управление доступностью кнопок ...
'--------------------------------------------------------------------------
    If Me.Recordset.EOF = False Then
        Me.RecordsetClone.MoveLast
        l = Me.RecordsetClone.RecordCount
    End If
    If l > 0 Then bEnabled = True
    Me!cmdGoNext.Enabled = bEnabled
    Me!cmdGoPrevious.Enabled = bEnabled
    Me!cmdGoToFirst.Enabled = bEnabled
    Me!cmdGoToLast.Enabled = bEnabled

End Sub

Picture



Ещё вариант

Private Sub cmdНаСледующуюЗапись_Click()
'Переход на следующую запись
'--------------------------------------------------------------------------
On Error GoTo cmdНаСледующуюЗапись_Click_Err
    
    'DoCmd.GoToRecord acDataForm, Me.Name, acPrevious    'Переход на предыдущую запись формы
    DoCmd.GoToRecord acDataForm, Me.Name, acNext        'Переход на следующую запись формы
    'DoCmd.GoToRecord acDataForm, Me.Name, acNewRec      'Переход на новую запись    

    Me!Номенклатура.SetFocus         'Перевод фокуса на элемент управления "Номенклатура"

cmdНаСледующуюЗапись_Click_Bye:
    Exit Sub

cmdНаСледующуюЗапись_Click_Err:
    
    If Err.Number = 2105 Then 'Если переход на запись невозможен (тек. запись новая)
        MsgBox "Переход не возможен!" & vbCrLf & "Bla-Bla-Bla ...", vbCritical, "Ошибка перехода"
        GoTo cmdНаСледующуюЗапись_Click_Bye
    End If
    'Остальное (ну мало ли....)
    MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf & "в процедуре: cmdНаСледующуюЗапись_Click", vbCritical, "Error in module Form_Приход"
    Resume cmdНаСледующуюЗапись_Click_Bye
End Sub




Скачать

MSA-2003 + MSA-2007 ( 98 kB) Пример


Назад ToTop
L.E. 30.01.2024
Рейтинг@Mail.ru