Я пытаюсь выполнить запрос к моему набору данных в MS Access 2016, где в вывод запроса включены только определенные строки (пожалуйста, посмотрите на включенное изображение). Я хочу включить все поля со строками, которые содержат слова "rat", "mouse", "stoat" и "possum" из столбцов "Pest_com", в то время как все остальные поля в этих столбцах исключены.

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

Заранее спасибо за помощь!

введите описание изображения здесь

1 ответ1

0

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

В QBE вы можете заменить Pest_Com1 на нижеследующее, где использование tbl - это имя таблицы.

Pest_COM1: IIF (tbl.Pest_COM1 LIKE "*rat*" OR tbl.Pest_COM1 LIKE "*mouse*" OR tbl.Pest_COM1 LIKE "*stoat*" OR tbl.Pest_COM1 LIKE "*possum*",tbl.Pest_COM1, "")

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

Если вы буквально хотите включить только соответствующие поля, вам придется создать строку SQL в коде vba. Вам нужно будет определить, есть ли значения в каждом поле, чтобы определить, следует ли включать. Для этого вы можете использовать IIF, аналогичный приведенному выше, но замените истинную часть (второй параметр) на 1, а ложную часть (третий параметр) на 0. Тогда сумма. Если поле имеет значение> 0, вы хотите включить поле. Это только часть запроса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .