У меня есть база данных с 3 таблицами ( ListOfDevice, DeviceType, Employee ).
ListOfDevice Table
- DeviceName
- Модель устройства
- DeviceType ------> Ссылка на таблицу DeviceType с использованием ID и DeviceType.
- EmployeeID ------> Ссылка на таблицу Employeeиспользуя ID и FirstName.
- DeviceStatus ------> У этого есть только два значения, Работающее или Поврежденное.
У некоторых записей нет employeeID, и онис пометкой «Поврежден» в поле состояния устройства.
Я создал запрос и назвал его «QryDeviceLists», и внутри этого запроса я импортировал эти 3 таблицы и начал фильтровать результаты запроса и отчета.Я использовал «Нравится» и подстановочный знак для фильтрации.
Пример: Like"*" &[Form]![FormName]![ControlName or Combo box name]&"*"
Здесь я пытаюсь отфильтровать это DeviceType , EmployeeID и DeviceStatus .И способ, которым я хочу, чтобы этот фильтр работал, через поля со списком, у меня есть форма, которую я назвал фильтром, и внутри этой формы есть 3 несвязанных поля со списком, связанных с этими тремя таблицами.И вот как я сгенерирую отчет:
Если я выберу значение из комбинированного списка devicetype либо «Рабочий стол, либо ноутбук» и оставлю остальные поля со списком пустыми, тогда это должно дать мнерезультат работы ноутбука или настольного компьютера со всеми пользователями и состоянием устройства, работающего или поврежденного.
То же самое для поля со списком EmployeeID , если я выбралимя или идентификатор сотрудника, который должен давать результат конкретного устройства, назначенного специально для этого сотрудника.
А для поля со списком состояния устройства он должен давать результат либо работающий, либо поврежденный в зависимости отвыбор из поля со списком.
И оставляя все поля со списком пустыми, он должен показывать все записи устройств, будь то ноутбук или настольный компьютер, работающий или поврежденный, назначенный всем сотрудникам.
Вот проблемы, с которыми я сталкиваюсь при попытке извлечь отчет с помощью комбинированных полей.
Если я выберу значение из Тип устройства иоставьте идентификатор сотрудника и статус пустым, записи не отображаются.Та же проблема касается поля со списком идентификаторов сотрудников. Если я оставляю тип и состояние устройства пустыми, записи также не отображаются.
Если я оставляю все поля со списком пустыми, то только записикоторые помечены как Работа над статусом устройства.Возможно, это связано с тем, что другая запись, помеченная как поврежденная, не имеет значения в поле идентификатора сотрудника.Потому что, когда я попытался поместить значение в поле идентификатора сотрудника и заново сгенерировать запрос, оставив все поля со списком пустыми, все записи отображаются.
Примечание: у меня нетлюбой опыт VBA, и я использую Access 2013-2016
Вот запрос SQL Lines SELECT ListOfDevices.ID, ListOfDevices.DeviceName, ListOfDevices.[Device Model], DeviceType.DeviceType, Employee.FirstName, ListOfDevices.DeviceStatus
FROM Employee RIGHT JOIN (DeviceType RIGHT JOIN ListOfDevices ON DeviceType.ID = ListOfDevices.DeviceType) ON Employee.ID = ListOfDevices.EmployeeID
WHERE (((DeviceType.DeviceType) Like "*" & [Forms]![filter]![CboDevType] & "*") AND ((Employee.FirstName) Like "*" & [Forms]![filter]![CboEmp] & "*") AND ((ListOfDevices.DeviceStatus) Like "*" & [Forms]![filter]![CboStat] & "*"));