Когда пользователь щелкает текстовое поле в моей форме, мне нужно присвоить идентификатор текущей записи, если его еще нет - PullRequest
0 голосов
/ 19 марта 2020

У меня есть форма, frmEvent, для редактирования и создания записей. Каждая запись представляет собой событие. У меня есть всплывающая форма, которая отображает отношения «многие ко многим», которые связывают одного или нескольких людей с текущим событием. Эта всплывающая форма открывается, когда пользователь щелкает текстовое поле в frmEvent.

Во всплывающей форме отображаются все записи в tblEventPersons, где EventID = идентификатор записи события, которая в данный момент открыта. Это нормально работает отлично. Однако , когда моя форма используется для создания новой записи события, Access не назначает идентификатор для новой записи события, пока не будет изменено хотя бы одно поле. Если пользователь создает новую запись события и пытается немедленно открыть форму frmEventPersons, он получает сообщение об ошибке, потому что новой записи события еще не присвоен идентификатор.

Я уверен, что существует очень простое решение это, но мои поиски не принесли ничего полезного.

1 Ответ

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

Что ж, предполагается, что основная форма имеет запись, содержит некоторые данные и имеет "ID", как вы и просили.

Однако, если форма перемещается в новую запись, и вы Вы хотите запустить следующую форму, которая требует и нуждается в текущем идентификаторе формы, который, как вы, НОВОЕ, еще не сгенерировал? номер PK id столбца), если текущая запись была «загрязнена». Таким образом, мы предполагаем, что текущая запись имела НЕКОТОРЫЕ данные редактирования. Если он НЕ РЕДАКТИРУЕТСЯ, то оказывается, что это немного хитроумно, чтобы получить принудительную подачу Access и сгенерировать этот идентификатор.

О самом простом способе? Грязное поле / столбец в текущей форме. например:

  if isnull(me!ID) then
     ' this record does not yet have the PK id
     ' dirty some bound control.
     me.MyEditDate = date()
  end if

  me.Dirty = false     ' this will force a recrod save - gereate the "ID" you want.

  docmd.Open "frmDetails",,,"FKColumn = " & me!id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...