Непрерывная форма не собирается "последней записи" - PullRequest
1 голос
/ 30 апреля 2019

Итак, я создал форму (доступна только для тех, кто имеет ID уровня безопасности разработчика), которая позволяет мне вводить оператор SQL в несвязанное текстовое поле и выполнять.

Если оператор не выполняетсяон заполняет непрерывную подчиненную форму в форме ошибочной ошибкой / описанием, но после быстрого me.refresh он переходит к первой записи, и независимо от того, что я пытаюсь, я не могу заставить ее перейти к последней записи.

Я пробовал:

Me.sub_ConsoleRTN.Form.ConsoleRTN.MoveLast

, а также:

Me.sub_ConsoleRTN.Form.ConsoleRTN.SetFocus
DoCmd.RunCommand accmdRecordsGoToLast

, и они работают без ошибок, но не показывают последнюю запись

Вот полный код:

Private Sub ExecuteSQL_Click()
On Error GoTo ErrorHandler

Dim strSQL As String
Dim myCI As String

myCI = txt_sqlConsole.Value

If myCI = "" Then
    strSQL = "INSERT INTO tbl_ADM_Console " & "(ErrNumber,ErrDescription) VALUES" & "(101, 'Cannot exectute blank statement')"
    CurrentDb.Execute strSQL, dbFailOnError
    Me.txt_actionconf.Value = "Action cancelled - compile error"
    Me.Refresh
    Me.sub_ConsoleRTN.Form.ConsoleRTN.SetFocus
    DoCmd.RunCommand acCmdRecordsGoToLast
        Else
        strSQL = myCI
        CurrentDb.Execute strSQL, dbFailOnError
        Me.txt_actionconf.Value = "Action completed"
        Me.Refresh
        DoCmd.GoToRecord , , acLast

    End If

Exit_ExecuteSQL:                         ' Label to resume after error.
Exit Sub                                 ' Exit before error handler.

ErrorHandler:                            ' Label to jump to on error.
     Call logConsoleErrors(Err.Number, Err.Description, "Console()")
     Me.txt_actionconf.Value = "Action cancelled - compile error"
     Me.Refresh
     Resume Exit_ExecuteSQL

End Sub

Как всегда, я, вероятно, упускаю что-то очень простое, но источники в Интернете вроде того, что "Me.sub_ConsoleRTN.Form.ConsoleRTN.SetFocus DoCmd.RunCommand accmdRecordsGoToLast" является правильным методом дляпопробовать

1 Ответ

2 голосов
/ 30 апреля 2019

Вы можете вызвать этот код - здесь, включенные в событие OnLoad :

Private Sub Form_Load()

    Dim rs  As DAO.Recordset

    Set rs = Me.RecordsetClone
    If rs.RecordCount > 0 Then
        rs.MoveLast
        Me.Bookmark = rs.Bookmark
    End If
    rs.Close

End Sub

А если ваша форма привязана к tbl_ADM_Console , вы можете пропустить всекод и просто используйте AddNew на RecordsetClone.

...