Создание Cmd в форме go непосредственно для указанной записи c - PullRequest
0 голосов
/ 15 апреля 2020

При создании Cmd в форме на go непосредственно на указанную c запись она идет туда, но затем при нажатии на Cmd Next это не работает?

Сначала я создал Sub для используйте в моих командных кнопках Следующая и Предыдущая запись:

'''
Sub MvToRec(frm As Form, mv As Access.AcRecord)

On Error Resume Next
    DoCmd.GoToRecord , frm.Name, mv
    Select Case Err.Number
    Case 0 'no error
    Case 2105
        'if first record reached jump to last and vice versa
        Select Case mv
        Case acNext: mv = acFirst
        Case acPrevious: mv = acLast
        End Select
        MvToRec frm, mv
    Case Else
        Debug.Print Err.Number, Err.Description
    End Select   
End Sub
'''

И затем я использую этот саб для своих командных кнопок Следующая (cmdNextRecord) или Предыдущая (cmdPreviousRecord):

'''
Private Sub cmdNextRecord_Click()
    MvToRec Me, acNext
End Sub

Private Sub cmdPreviousRecord_Click()
    MvToRec Me, acPrevious
End Sub
'''

Затем я создал командную кнопку «CmdGoTo», которая считывает определенный номер записи, вставленный пользователем (Me.TxtID), и открывает эту конкретную запись:

'''
Private Sub CmdGoTo_Click() 
Dim strsearch As String
Dim Task As String

'Check if a Paper ID entered or not
If IsNull(Me.TxtID) Or Me.TxtID = "" Then
   MsgBox "Please type in your paper ID.", vbOKOnly, "Paper ID Needed"
   Me.TxtID.BackColor = vbYellow
   Me.TxtID.SetFocus
Else
    strsearch = Me.TxtID.Value
    Task = "SELECT * FROM Papers WHERE ((ID Like ""*" & strsearch & "*""))"
    Me.RecordSource = Task
    Me.TxtID.BackColor = vbWhite
End If
End Sub
'''

Так что, как только я открываю форму, мои следующие и предыдущие командные кнопки работают как талисман, но когда я использую свою командную кнопку GoTo ... например, если пользователь вводит 22 и затем нажимает GoTo, он переходит к записи 22, что хорошо, но затем, если пользователь теперь пытается использовать следующую или предыдущую кнопки, это идет к записи 122 или к 222 или затем к 322, но никогда не идет к 23 (для следующего) или 21 (для предыдущего)? Я не понимаю почему? Может кто-то помочь мне с этим. Спасибо

1 Ответ

1 голос
/ 15 апреля 2020

Вы изменили RecordSource на все и только те записи, которые соответствуют вашему шаблону LIKE *22* (в вашем примере с введенным "22"). Так что если у вас есть записи со значениями идентификатора от 1 до 1000, то после выполнения ваших CmdGoTo_Click только записи 22, 122, 220, 221, 222, ..., 229, 322, 422, ... и т. Д. Остаются в вашем источник записи формы. Поэтому следующим после 22 является 122.

Вы можете использовать DoCmd.FindRecord (-> Документация ) или Recordset.FindFirst (-> Документация ) вместо изменения Форма записи источника.

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