Код возвращает неверные записи / не может корректно обновить форму - PullRequest
0 голосов
/ 18 апреля 2019

Итак, я постараюсь изо всех сил объяснить фон, чтобы прояснить понимание того, чего я надеюсь достичь.У меня есть форма (События), которая имеет элемент управления вкладками, элемент управления вкладками имеет 3 разные страницы, каждая из которых имеет свою подчиненную форму.

Одна из подчиненных форм (динамики) имеет кнопку управления, которая проверяет «динамики»аттенюент ID и, если есть совпадение, открывает форму «Включение» для записи, которая соответствует.

Что предполагается делать, если запись не соответствует, это открыть форму для новой записи и вставить ContactID,AttendeeID и EventID.

Это четвертая итерация кода, которая работает до некоторой степени / не возвращает ошибок

Dim myR As Boolean
Dim strSQL As String
Dim myV1 As Integer
Dim myV2 As Integer
Dim myV3 As Integer

'Define the variables to be input
myV1 = Me.AttendeeID
myV2 = Me.ContactID
myV3 = Me.EventID

'Is there a Matching Onboard Record for the current Attendee Record?
myR = DCount("*", "tbl_Onboarding", "[AttendeeID] = " & Me.AttendeeID) > 0

If myR = True Then
  DoCmd.OpenForm "usf_Onboarding", acNormal, , , acFormEdit, acWindowNormal     'Edit Mode
Else        'No Matching Record, so Add one
  If Me.Dirty = True Then Me.Dirty = False      'Save pending Edits
  DoCmd.OpenForm "usf_Onboarding", acNormal, , , acFormAdd, acWindowNormal      'Add Mode

  Forms!usf_Onboarding!txt_ForceFocus.SetFocus

  strSQL = "INSERT INTO tbl_Onboarding (AttendeeID,ContactID,EventID) VALUES (" & myV1 & ", " & myV2 & ", " & myV3 & ")"

  Debug.Print strSQL

  CurrentDb.Execute strSQL, dbFailOnError

  Me.Requery

  DoCmd.Close acForm, "usf_Events", acSaveYes

End If

Используя немедленное подтверждение, я подтвердил, что myV1, myV2 и myV3 - всеудерживая правильные значения, и я использовал точки останова для проверки построчно, и казалось, что все работает нормально с нулевым количеством ошибок, но у меня все еще есть следующие проблемы в зависимости от того, является ли myR True / False

  1. Еслизапись существует (myR = TRUE), тогда что-то теперь заставляет ее загружать только 1-ую запись таблицы (а не ту, где совпадает идентификатор участника).
  2. Если запись не существует (myR = FALSE) после выполнения этой таблицы, в таблице есть новая запись с contactID / AttendeeID / EventID, но форма не обновляется, чтобы показать это (элементы управления формы установлены на заблокированные= False) Это приводит к ошибке при закрытии.Поэтому выбор не сохранять данные (нажав «Да» на поле, чтобы отменить изменения) разрешает принудительный выход, но запись / данные сохраняются с contactID / AttendeeID / EventID

Debug.Print strSQL также не сделал 'не делай ничего странного.

1 Ответ

0 голосов
/ 18 апреля 2019

Проблема 1. «Если запись существует (myR = TRUE), то что-то теперь заставляет ее загружать только 1-ую запись таблицы (а не ту, где совпадает идентификатор участника)."

Мне нужно было добавить предложение where в команду openform

DoCmd.OpenForm "usf_Onboarding", acNormal, , "AttendeeID = " & Me.AttendeeID, acFormEdit, acWindowNormal 

Проблема 2. «Если запись не существует (myR = FALSE) после выполнения этой таблицы, в таблицу добавляется новая запись с contactID / AttendeeID / EventID, но форма не обновляется, чтобы показать это (элементы управления формой установлено значение locked = False) Это приводит к ошибке при закрытии. Поэтому выбор не сохранять данные (нажав «Да» на поле, чтобы отменить изменения) разрешает принудительное завершение, но запись / данные сохраняются с contactID / AttendeeID / EventID "

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

Else        'No Matching Record, so Add one
  If Me.Dirty = True Then Me.Dirty = False      'Save pending Edits

  strSQL = "INSERT INTO tbl_Onboarding (AttendeeID,ContactID,EventID) VALUES (" & myV1 & ", " & myV2 & ", " & myV3 & ")"

  CurrentDb.Execute strSQL, dbFailOnError

  DoCmd.OpenForm "usf_Onboarding", acNormal, , "AttendeeID = " & Me.AttendeeID, acFormEdit, acWindowNormal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...