#ms-access #ms-access-2016
#ms-access #ms-access-2016
Вопрос:
У меня есть запрос, которым я управляю с помощью некоторых параметров фильтрации с помощью формы. Одним из таких фильтров является поиск по медицинскому коду. Иногда это поле имеет значение, а иногда оно равно нулю. Я также хочу иметь возможность искать частичную строку данных. Код, который я пытаюсь, является:
Expr9: ([tblQA].[Charges Entered]) Like Nz("*" amp; [Forms]![MainMenu]![btnManagersMenu].[Form]![txtChargeCode] amp; "*","*")
Я хотел бы, чтобы произошло то, что если я введу какое-либо значение в txtChargeCode, оно вернет любую запись с этой строкой. Эта часть работает. Проблема возникает, когда txtChargeCode не имеет значения. Если запись равна нулю для введенных платежей, то эти записи отфильтровываются из результатов. Я все еще вижу записи, которые имеют значение. Я хочу, чтобы любые нулевые значения для платежей, введенных в записи, отображались в результатах, если txtChargeCode оставлен пустым. Кто-нибудь может мне помочь с тем, что здесь происходит? Я столько раз читал страницы Like и Nz, что мои глаза пересекались.
Ответ №1:
Ваши текущие критерии никогда не будут нулевыми, потому что они всегда будут включать строку «**».
Вместо этого мы будем использовать Nz для преобразования нулевых значений в [Введенные платежи] в пустые строки («»). Теперь, когда все элементы в [Введенные платежи] считаются строками в критериях, мы можем сравнить их с оператором LIKE .
Приведенное ниже выражение вернет все записи (включая нули), когда txtChargeCode пуст.
Nz([tblQA].[Charges Entered], "") Like "*" amp; [Forms]![MainMenu]![btnManagersMenu].[Form]![txtChargeCode] amp; "*"
Вы могли бы отсортировать [Введенные платежи] так, чтобы в верхней части результатов отображались нули, чтобы было легче определять нули, когда txtChargeCode пуст.
Комментарии:
1. Спасибо! Теперь, когда я смотрю на это таким образом, это имеет полный смысл.