#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