MS Access Введите идентификатор в основной форме после выпадающего списка в поле «Форма» - PullRequest
0 голосов
/ 17 марта 2020

У меня похожая ситуация с этой ссылкой: MS Access автоматически заполняет идентификатор в главной форме при вводе данных в подчиненной форме

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

Private Sub Form_Dirty(Cancel As Integer)
With Me.Parent
    If IsNull(!MainFormID) Then
        ' Change any field to create the parent record
        .Description = "Test"
        ' Save changes on the parent form.
        .Dirty = False
    End If
End With
End Sub

Я вставил код VBA и создал дополнительное поле под названием «Описание», которое фиксирует изменения в основной форме. Это работает, если я заполняю текстовое поле в подчиненной форме. Однако, если я выбираю элемент в выпадающем списке, он не работает.

Допустим, мой выпадающий список - cboSelectItem, я также попытался изменить событие на ниже, но на недоступное.

Private Sub cboSelectItem_BeforeUpdate(Cancel As Integer)

В любом случае, чтобы изменить код, чтобы иметь возможность работать для поля со списком и по-прежнему сохранить мой выбор из выпадающего списка?

1 Ответ

1 голос
/ 17 марта 2020

Вы можете перехватить событие On Enter sub form frame и проверить, есть ли у «родительской» формы активная запись. Таким образом, при добавлении новых записей в «родительскую» форму вы все равно можете установить связь между родительской и вложенной формой.

В главной форме выберите объект Sub form frame (где обычно выбирается link master fields \ link child fields. У этого фрейма должно быть два события: On Enter & On Exit.

. Используйте событие On Enter, чтобы проверить, есть ли в «родительской» форме какая-либо запись. Обратите внимание, что вы уже в родительских формах, поэтому parent form = current form.

Событие должно выглядеть следующим образом:

'This code should appear in the parent form's code page
Private Sub SubFormName_Enter()
    On Error Resume Next
    If (Me.NewRecord) Then

        Me!Description = "test"
        Me.Dirty       = False
    End If
End Sub

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

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