ms-access пытается поместить переменную в текстовое поле

#vba #ms-access

#vba #ms-access

Вопрос:

Извините, ребята, еще раз здравствуйте. Не программист, пытающийся что-то перепутать.

У меня все получилось с записью поиска.

 Dim Date1 As String
Dim Shift1 As String
Date1 = Text6.Value
Shift1 = List12.Column(1)
DoCmd.OpenForm "Data", , , "Data![ShiftDate] = #" amp; Date1 amp; _
"# AND Data![Shift] ='" amp; Shift1 amp; "'"
  

Теперь возникает новая сложность, когда она открывает новую запись, потому что критерии не выполняются. Когда запись не найдена, я хочу, чтобы она принудительно вводила две переменные, которые использовались для поиска в полях shiftdate и shift. Таким образом, я могу заблокировать эти поля и запретить своим пользователям создавать миллиард одинаковых дат и сдвигов. Он либо всегда будет направлять их к текущему созданному, либо создаст новый, если он недоступен.

Я пытался

 Data![shiftdate].Value = Date1
  

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

Комментарии:

1. Вы можете передать значения в параметре OpenArgs OpenForm. Когда форма откроется и загрузится, вы можете проверить, соответствует ли значение Me.newRecord true, и если да, проанализируйте значения OpenArgs и назначьте их двум заблокированным текстовым полям

Ответ №1:

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

Это должно сработать:

 Dim strWhere      As String
Dim Date1         As String
Dim Shift1        As String

Date1 = Test6.Value
Shift1 = List12.Column(1)

strWhere = "Data![ShiftDate] = #" amp; Date1 amp; _
           "# AND Data![Shift] ='" amp; Shift1 amp; "'"

If DCount("*", "tblShifts", strWhere) > 0 Then
   ' record exist, simply open the form
   DoCmd.OpenForm "Data", , , strWhere

Else
   ' record does NOT exist, open form in add mode
   DoCmd.OpenForm "Data", , , , acFormAdd
   '
   ' setup the two default values
   Forms!Data!ShiftDate = Date1
   Forms!Data!Shift1 = Shift1

End If
  

Ответ №2:

Ваша ошибка 424 связана с тем, что для использования = требуется объект с обеих сторон = , а Data![shiftdate].Value не объект. Я думаю, что вам нужно:

 Me.shiftdate = Date1