У меня возникла довольно раздражающая проблема в моем проекте доступа. Это файл Access 2007 - 2016.
В моей базе данных есть два запроса, которые я собираюсь использовать для фильтрации данных для подачи комбинированных списков. В одной из моих форм я сделал это с успехом. Первый список подается из таблицы, а последующие - путем фильтрации их соответствующей таблицы на основе предыдущего выбора списка. Вот скриншот моей формы, которая сработала . И вот часть кода, которая идет с ним:
Private Sub frm01ListSetor_Click()
DoCmd.Requery (qry01_frm01ListArea)
Me![frm01ListArea] = Null
DoCmd.Requery (qry02_frm01ListEquip)
Me![frm01ListEquip] = Null
Me![frm01TextID] = Null
End Sub
Private Sub frm01ListArea_Click()
DoCmd.Requery (qry02_frm01ListEquip)
Me![frm01ListEquip] = Null
Me![frm01TextID] = Null
End Sub
Вот запросы, которые идут вместе с кодом выше:
SELECT tblAreas.ID_Area, tblAreas.NomeArea
FROM tblAreas
WHERE (((tblAreas.SetorArea)=[Forms]![frm01_AddEquip]![frm01ListSetor]));
SELECT tblEquipamentos.ID_Equipamento, tblEquipamentos.NomeEquipamento
FROM tblEquipamentos
WHERE (((tblEquipamentos.SetorEquipamento)=[Forms]![frm01_AddEquip]![frm01ListSetor]) AND ((tblEquipamentos.AreaEquipamento)=[Forms]![frm01_AddEquip]![frm01ListArea]))
ORDER BY tblEquipamentos.ID_Equipamento;
Приведенный выше код работает просто отлично. Он соответствующим образом фильтрует данные для предыдущего выбора, а также очищает данные и выбор «правильных» списков каждый раз, когда выбирается другое значение из «последующих». Так что эту форму я создал, чтобы помочь мне при заполнении базы данных моего оборудования.
Давайте теперь перейдем к проблемному c близнецу:
Я создал еще одну форму для заказов на обслуживание этих оборудование. Это должно быть более удобным для пользователя, так как другие люди будут использовать его. Поэтому я использовал комбо-боксы для выбора значений вместо списков. Я говорю это заранее, потому что это единственное, что я могу заметить, что новая форма отличается от приведенной выше.
Вот у меня вот что: Скриншот проблемной формы
После выбора расширенного поля со списком на изображении 2 я должен выполнить следующий код:
Private Sub frm02SetorOM_Click()
DoCmd.Requery (qry04_frm02CBArea)
Me![frm02AreaOM] = Null
DoCmd.Requery (qry05_frm02CBEquip)
Me![frm02EquipamentoOM] = Null
End Sub
Private Sub frm02AreaOM_Change()
DoCmd.Requery (qry05_frm02CBEquip)
Me![frm02EquipamentoOM] = Null
End Sub
Это в основном то же самое, что я сделал в первой форме, но с другими переменными.
Но я получаю «Ошибка времени выполнения 3021: нет текущей записи» каждый раз, когда выбираю значение в поле «Setor». Cra sh происходит в строке «DoCmd.Requery (qry04_frm02CBArea)».
Вот запрос для поля области этой формы (qry04_frm02CBArea):
SELECT tblAreas.ID_Area, tblAreas.NomeArea
FROM tblAreas
WHERE (((tblAreas.SetorArea)=[Forms]![frm02_SubmitOM]![frm02SetorOM]));
Но дело в том, что Больше всего меня смущает то, что когда я нажимаю «Конец» в диалоговом окне «Ошибка времени выполнения», мое поле со списком «Область» - которое раньше было пустым - даже с ошибкой получает правильные параметры, например, если оно действительно «запрошено».
Как я могу решить эту проблему?
Заранее спасибо. Кстати, это мой первый проект Access, поэтому, пожалуйста, учтите это в ответе.