Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Access сложные фильтры!!!

9.5K
18 мая 2005 года
VeBMoN
9 / / 08.04.2005
Как сделать одновременно 3 сложных фильтра для формы?
Пример условия одного фильтра (остальные условия имеют такую же структуру):

(agebeg>= [ВозрастОт] And ageend<= [ВозрастДо]) Or (agebeg<= [ВозрастОт] And ageend>= [ВозрастДо]) Or (agebeg<= [ВозрастОт] And (ageend>= [ВозрастОт] And ageend <= [ВозрастДо])) Or ((agebeg>= [ВозрастОт] And agebeg [ВозрастДо]) And ageend>= [ВозрастДо]).

Заранее благодарен за помощь!
425
19 мая 2005 года
sq_deep
498 / / 18.02.2005
Что сделать-то надо? Опишите словами приблизительно так:
Есть два поля (agebeg и ageend) и два значения даты ([ВозрастОт] и [ВозрастДо]). Надо, чтобы условие выполнялось для всех значений полей, у которых <и далее что именно для них должно выполняться>. Уверен, что после написания такого понятного вопроса вам уже не понадобится подсказка.

Рекомендую узнать про BETWEEN. Например, вместо того, чтобы писать a <= b AND b <= c пишите лучше b BETWEEN a AND c.

В условии, приведённом в вашем вопросе, обратите внимание на следующее:
в agebeg [ВозрастДо] пропущено условие.
9.5K
20 мая 2005 года
VeBMoN
9 / / 08.04.2005
Вся проблема заключается в том, что в запрос нельзя поместить три таких условия, т.к. они слишком сложные, и требуется прописывать их одновременное выполнение.
Я предполагаю, что требуется написать три фильтра на VBA, но вот как?? Простые фильтры я писал, а такие ( с большим количеством условий) ещё нет.
Если вам будет не сложно - приведите пример кода такого фильтра.
Спасибо за помощь!
425
20 мая 2005 года
sq_deep
498 / / 18.02.2005
Не понимаю, что значит "слишком сложные" фильтры. Это что, Access говорит "не могу работать, потому что фильтр слишком сложный"?

Расскажите лучше, что хотите сделать. Тогда, может быть, вам помогут слепить фильтр, или подскажут, что надо вбить в коде, или ещё что-нибудь.
9.5K
21 мая 2005 года
VeBMoN
9 / / 08.04.2005
Ок, объясню подробно.
У меня есть таблица с данными. Из основной формы я перехожу в форму сортировки(Рис1). Там каждому полю соответствует ячейка в таблице(т.е. "ВозрастОт" на форме соответствует "AgeBeg" в таблице, "ВозрастДо" - "AgeEnd" и т. п. "Тематика" - "Тематика").
Мне нужно, чтобы при заполнении всех полей и нажатии ОК, открывалась другая форма, а все данные в ней отбирались в соответствии с заполненными полями в форме сортировки(Рис1).
Условие сравнения возраста в таблице с возрастом в форме сортировки я приводил в сообщении выше. Подобные условия для времени и для количества. С тематикой всё просто.
Вот в принципе и всё.
425
23 мая 2005 года
sq_deep
498 / / 18.02.2005
Цитата:
Originally posted by VeBMoN
Ок, объясню подробно...

Это должно выглядеть примерно так

Код:
Dim w As String    ' для WHERE clause

' Разберёмся с Тематикой
If Not IsNull(Тематика) Then _
  w = "Subjects = " & Str(Тематика)

' Разберёмся с Возрастами
If Not IsNull(ВозрастОт) Or Not IsNull(ВозрастДо) Then
  If w <> "" then w = w & " AND "   ' приделаем AND (если надо)
  If Not IsNull(ВозрастОт) Or Not IsNull(ВозрастДо) Then
    w = w & "(Age BETWEEN " & Str(ВозрастОт) & " AND " & Str(ВозрастДо) & ")"
  ElseIf Not IsNull(ВозрастОт) Then
    w = w & "Age >= " & Str(ВозрастОт)
  Else        ' очевидно, Not IsNull(ВозрастДо)
    w = w & "Age <= " & Str(ВозрастДо)
  End If
End If

' ... примерно то же самое для полей "Время" и "Количество"

Dim sql As String
sql = "SELECT some_fields FROM some_tables"
If w <> "" Then sql = sql & " WHERE " & w
DoCmd.RunSQL sql
В таком вот духе.
9.5K
23 мая 2005 года
VeBMoN
9 / / 08.04.2005
Большое спасибо!!! попробую сделать так.
9.5K
26 мая 2005 года
VeBMoN
9 / / 08.04.2005
Если Вас не затруднит - опишите код поподробнее и приведите пример его вставки в форму.
425
27 мая 2005 года
sq_deep
498 / / 18.02.2005
Цитата:
Originally posted by VeBMoN
Если Вас не затруднит - опишите код поподробнее и приведите пример его вставки в форму.

Пример формирования фильтра прилагаю. Там таблица T с полями sTheme, nAge и nQty. Две формы: главная F и для формирования фильтра F_Filter. Смотрите обработку событий форм.

Подробнее код описывать некуда. Если вы не понимаете MS Access VBA, то прочитайте какую-нибудь книжку. Если трудность в чём-то другом, спросите конкретно.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог