Я создал несвязанную форму с несколькими Combo Boxes с целью передачи параметров, полученных в SQL-запрос. Мой SQL работает, когда все поля содержат значение, но когда он равен нулю, весь запрос завершается с ошибкой. Я установил предложение where для каждого поля к его соответствующему (tblIRS.[Field]=Forms!frmSUPIR![Field] OR Forms!frmSUPIR![Field] IS NULL OR tblIRS.[Field] IS NULL) AND (...
Передача параметра из значений в запрос
Я также попытался передать значения из несвязанных из переменных, а затем построить SQL в VBA, а также безрезультатно. Каждое поле имеет свою линию, аналогичную приведенной ниже:
Dim strFilter As String
Dim strSQL As String
If Nz(Me.EMP1, "") <> "" Then
strFilter = strFilter & "tblIRS.[EMP1] = '" & PQ(Me.txtEMP1) & "' And " ...
strSQL = "SELECT * FROM tblIRS " & _
"WHERE" & strFilter
End If
Вышеупомянутая функция включает функцию замены PQ.
Я нашел множество ресурсов, обрабатывающих выше, но ни один из них не включает обработку нулевых значений таблиц и/или записей в форме.
Моя цель состоит в том, чтобы пользователь сузил свой поиск, используя как можно меньше комбинированных ящиков. Форма идеально примет значения null в поле со списком, которые будут обрабатываться как NULL, и не отображать все записи с нулевым значением таблицы для этого поля.
Например:
- Формы frmSUPIR [EMP1] = [Smith, John]
- Формы frmSUPIR [етр2] = [Джонс, Марк]
- Формы frmSUPIR [!!!!! EMP3] = Null
Я желаю, чтобы запрос возвращал все случаи, когда EMP1 = Смит, Джон И етр2 = Джонс, Марк ИANY Значение для EMP3. Каков наилучший способ сделать это?
Надеется, что я достаточно ясно, и спасибо заранее,
JS
Спасибо, OpiesDad, похоже, это привело меня на правильный путь. Когда я запускаю код, я получаю синтаксическую ошибку. В частности, время работы 3075. Я попытался установить тогда = TRUE, = "TRUE", = '""'. Есть рекомендации? Я использую: DoCmd.OpenReport «repSUPIR», acViewPreview,, strSQL, чтобы открыть отчет. Еще раз спасибо. – atomedic
Пробел пропал после 'WHERE' ... – Gustav
Я бы проверил последнюю строку SQL, а затем попытаюсь запустить ее за пределами VBA, чтобы узнать, есть ли какие-либо ошибки. Эта ошибка, как правило, является синтаксической ошибкой SQL. Вы определенно хотите = «TRUE» ..... как я сказал, это сделает предложение where «WHERE x AND y AND z ....«Если вы положите = TRUE, это может сработать (если VBA автоматически преобразует логическое значение в строку), но это не очень хорошо. Если вы положите =« », то предложение where будет выглядеть примерно так:« WHERE x AND И z ", и это определенно не сработает. – OpiesDad