#sql #ms-access
#sql #ms-access
Вопрос:
Ситуация: метаданные о биологических образцах собираются в таблице Access.
Образцы поступают от пациентов-людей, а данные о пациентах собираются в отдельную таблицу.
Чтобы ограничить объем личной медицинской информации, которая у нас есть, база данных пациентов должна обновляться новыми пациентами только тогда, когда мы фактически получаем от них образцы.
Чтобы работники ввода данных знали, когда им нужно обновить таблицу пациентов, я хочу, чтобы в форме ввода данных образца была кнопка, которая будет передавать введенное значение идентификатора пациента в качестве критерия для запроса.
Запрос выглядит так прямо сейчас:
SELECT Patients.[Patient id]
FROM Patients
WHERE (((Patients.[Patient id])=[Forms]![Specimen entry]![patient id]));
но он никогда не дает результатов, даже когда я запускаю его из записей, которые, как я знаю, соответствуют пациентам в таблице пациентов.
Как мне это исправить?
Предложения о том, как назвать эту ситуацию, чтобы я мог улучшить поиск по ней, также будут оценены. Я новичок в Access.
Ответ №1:
Запрос выглядит корректно, но убедитесь, что предложение WHERE сравнивает числа с числами или строки со строками (а не число со строкой). Также убедитесь, что имена формы и текстового поля указаны правильно. Быстрый тест с использованием вашего запроса сработал для меня.
В зависимости от того, как вы планируете представлять информацию, вы также можете динамически создавать запрос в VBA, а затем передавать информацию в форму.
Для поиска я бы рекомендовал некоторую комбинацию access, dynamic, query и vba.
альтернативный вариант
Если вы хотите узнать, существует ли в таблице только один пациент, может быть проще использовать функцию dlookup:
If IsNull(DLookup("[Patient ID]", "Patients", "[Patient ID]='" amp; Me.Patient_ID amp; "'")) Then MsgBox "does not exist"
Это проверит, существует ли пациент (возвращает число) или не существует (возвращает NULL).
https://support.office.com/en-us/article/DLookup-Function-8896cb03-e31f-45d1-86db-bed10dca5937