Новая команда записи работает в режиме администратора, но не в нормальном режиме, если присутствует оператор If - PullRequest
0 голосов
/ 26 апреля 2018

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

Private Sub NewLocProLink_Click()

    mbResult = MsgBox("Are you sure you would like to add a new provider to 
    location relationship?", vbYesNo, "New location to provider relationship")

    If mbResult = vbYes Then
        DoCmd.GoToRecord , "", acNewRec
    ElseIf mbResult = vbNo Then
        MsgBox ("No new record")
    End If

End Sub

Этот код не работает. Когда я нажимаю «Да», кажется, что ничего не происходит. Однако, когда я нажимаю «Нет», я получаю тестовый MsgBox с надписью «Нет новой записи». Итак, я знаю, что код входит в мое утверждение If.

Теперь вот странная часть. Когда я обращаюсь к БД в режиме администратора (удерживая нажатой клавишу Shift при входе) и тестирую кнопку, она работает. Но потом, когда я закрываю БД и возвращаюсь обратно, не удерживая нажатой клавишу Shift и нажимая кнопку, это не работает.

Если я редактирую код кнопки, чтобы у меня была только команда перейти к новой записи без окна сообщения с подтверждением, например:

Private Sub NewLocProLink_Click(
    DoCmd.GoToRecord , "", acNewRec
End Sub

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

Еще одна информация, которую я не уверен, почему это может оказать влияние, но, возможно, кто-то знает, что это может произойти, это то, что все мои таблицы используют соединение ODBC для связи с таблицами в SQL Server 2014.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Проблема в фокусе. Если вы открываете окно сообщения, оно имеет фокус. Поскольку вы не указываете, какую форму следует перемещать, она не работает.

Простое решение - использовать набор записей форм вместо:

Private Sub NewLocProLink_Click()
    mbResult = MsgBox("Are you sure you would like to add a new provider to 
    location relationship?", vbYesNo, "New location to provider relationship")

    If mbResult = vbYes Then
        Me.Recordset.AddNew
    ElseIf mbResult = vbNo Then
        MsgBox ("No new record")
    End If
End Sub
0 голосов
/ 26 апреля 2018

Поскольку запись, к которой вы пытаетесь получить доступ, находится во вложенной форме, объявите объект как часть DoCmd.GoToRecord, "[Имя объекта]", acNewRec.

Это может решить вашу проблему.

EDIT:

Я должен уточнить, что я имею в виду здесь:

(при условии, что ваши формы "Form1", а подформа - "Form2")

Forms!Form1!Form2.SetFocus DoCmd.GoToRecord , "", acNewRec

...