У меня есть отчет, выбираемый из таблицы под названием «Волонтеры». Все предложение WHERE создается в VBA во время выполнения на основе следующих параметров, выбранных в форме
Тип добровольца: один из 2 флажков
Регион: 1 выпадающий список, но в VBA в каждом регионе может быть любое количество офисов
Положение: 4 варианта множественного выбора
Округ: 70 опций множественный выбор
Мой отчет должен компилировать все эти динамические переменные во время выполнения.
То, что я думал, будет моим последним вопросом - в отношении округов - на самом деле не работает, и вот где я сейчас.
В таблице "Волонтер" каждый из 70 округов является своим собственным логическим полем.
ReportFrom представляет графства в виде строк. Чтобы выполнить цикл до 70 выборок в операторе OR для оценки String и True / False, было предложено следующее решение:
Dim s As Variant
Dim ctl As Control
Dim t As TCondition
Set ctl = Me.Counties
If ctl.ItemsSelected.Count <> 0 Then
For Each s In ctl.ItemsSelected
t.WhereCondition = t.whereCondition & ctl.ItemData(s) & " = -1 OR"
Next s
' trim trailing " OR"
t.WhereCondition = Left(t.WhereCondition, Len(t.WhereCondition)-3)
End If
Это сработало ОТЛИЧНО, за исключением случаев компиляции этих выборок с другими параметрами предложения WHERE. Вокруг этого выбора не хватало паренов, и он не фильтровал записи должным образом.
Я попробовал несколько решений, наиболее близким из которых было:
If ctl.ItemsSelected.Count <> 0 Then
For Each s In ctl.ItemsSelected
t.WhereCondition = t.WhereCondition & "((" & ctl.ItemData(s) & ") = -1) OR )"
Next s
t.WhereCondition = Left(t.WhereCondition, Len(t.WhereCondition) - 4)
End If
Проблема состоит в том, что при обрезке 4 символов удаляется RParen, который мне нужен , чтобы этот оператор правильно фильтровал отчет. Тримминг только 3 оставляет за собой букву "О".
Мне нужно каким-то образом удалить только конечное ИЛИ, сохранив завершающие скобки.
Есть ли способ сделать это?
(я ненавижу отправлять вопросы после полудня (EST), так как я не смогу следить за ними до завтра, но я весь день ломал голову над этим)