|
|
|
| Есть у меня таблица моих дел. Через запрос я получила поле, в котором указано, сколько дней осталось до выполнения дела или сколько дней прошло после выполнения.
Как в форме можно сделать такую фильтрацию, чтобы я могла видеть:
Все дела, до выполнения которых осталось от 1 до 30 дней.
от 1 до 7 дней.
от 1 до 3 дней.
1 день (дела на завтра).
0 дней (дела сегодня).
А еще лучше сделать так, чтобы я могла сама выбрать нужное количество дней и посмотреть все дела, до которых осталось от одного до другого количества дней.
Я сделала так, чтобы видеть дела за определенный день. Но это легко. А хотелось бы сделать так, чтобы я могла видеть дела за определенный период.
Фильтр у меня по столбцу "Осталось/Прошло дней". Если там 1 день остался, значит это дела на завтра, если 0, то дела на сегодня, если от 1 до 30 дней, значит я увижу дела за предстоящие 30 дней.
Спасибки | |
|
| |
|
15 Кб. |
|
| Может так | |
|
| |
|
|
|
| Где-то так, для будущих дел:
Добавляем в форму поле для фильтра, называем "fldFiltr", на событие "После обновления" :
Private Sub fldFiltr_AfterUpdate()
Me.Filter = "[Осталось/Прошло дней]>=0 AND [Осталось/Прошло дней]<=" & Me.fldFiltr
Me.FilterOn = True
End Sub
|
Не мешало бы проверять значения поля fldFiltr перед формированием строки фильтра. | |
|
| |
|
|
|
| Спасибки большое, ребят. Прям что нужно. Особенно примерчик pasat. Как раз то, что я хотела.
| |
|
| |
|
|
|
| Во так лучше (не будут выводиться прошлые дела)
SELECT b.ID, b.Dela, b.Date, [date]-Date() AS Date2
FROM b
WHERE (((b.Date)>=Date()) AND (([date]-Date())<=Val([Forms]![Form1]![Text0])))
|
| |
|
| |
|
|
|
| Pasat, я уже также сделала, чтобы исключить прошедшие дела. Но все равно спасибо.
И Lukas, Ваш вариант тоже использовала. Как ни странно, но я нашла применение обоим вариантам!
Спасибо, ребят. | |
|
| |
|
|
|
|
| просто я хочу с помощью кнопок или ссылок просматривать дела на сегодня, на завтра, за период, все просроченные и т.п. Много условий.
И при этом я хочу иметь только один запрос и одну форму. Сейчас я это сделала, но с помощью нескольких запросов, так как условия-то все разные и в один запрос не запихнешь.
А хотелось бы, чтобы условие устанавливалось кодом или макросом при нажатии на соответствующую кнопочку, чтобы запрос был только один. | |
|
| |
|
|
|
| При таких условиях, наверное, было бы правильно формировать строку запроса в коде, присваивать строку запроса как источник строк формы.
Или, если позволит структура источника, менять строку фильтра формы в коде. | |
|
| |
|
|
|
| во, я как раз это и хочу. формировать строчку запроса в коде. Маленький примерчик можно? А я уж сама разберусь.
я не знаю, возможно это или нет, но с учетом того, что поля в запросе всегда будут одни и те же, можно ли в коде как-то обойтись без select (так как он всегда одинаков) и прописывать только строчку Where, в которую и вставлять условие запроса! | |
|
| |
|
|
|
| то есть вот запрос. обычный запрос.
SELECT b.ID, b.Dela, b.Date, [date]-Date() AS Date2
FROM b
и эта часть запроса меняться никогда не будет программно.
а вот такой запрос хочу получить с помощью кнопки
SELECT b.ID, b.Dela, b.Date, [date]-Date() AS Date2
FROM b
WHERE (((b.Date)=Date()));
то есть здесь только добавлено where, то есть условие.
При этом количество столбцов может меняться вручную. Соответственно, через код желательно не устанавливать Select. А наоборот, хочется запускать запрос и при его открытии устанавливать ему условие программно.
О, как завернула. Надеюсь, я объяснилась нормально? | |
|
| |
|
15 Кб. |
|
| Пример с использованием фильтра формы. | |
|
| |
|
|
|
| Да, получается даже удобнее, чем через запрос. И все свои условия я смогла с помощью фильтра сделать.
СПАСИБО | |
|
| |
|
|
|
| Ничего не скажешь.
Сделано професионально.
Так одна ремарка
В литературе часто всречал: что там где возможно советуется лучше использывать сохраненные запросы | |
|
| |
|
|
|
| Поэтому и предложил вариант с фильтром для формы, источником данных которой служит сохраненный запрос. | |
|
| |
|
|
|
| А я все свои запросы, кстати, сохраняю. Я вообще терпеть не могу то, что я не могу увидеть визуально и по-человечески. Ну не программистка, я же говорила. Мне проще видеть слово, чем нули и единицы
Но здесь, кстати, запрос ведь сохраненный. не сохраненное только условие запроса, но это ведь и не требуется в данной ситуации. | |
|
| |
|
|
|
| А я вот еще добавила фильтрацию дел за определенный период. Но мне пишет TYPE MISMATCH
Все поля установлены как ДАТА.
Вот как я написала (сделала по примеру кнопки Дело на дату).
Me.Filter = "[Дата_выполнения] Between" & Format$(Me.Поле43, "\#mm\/dd\/yyyy\#") And Format$(Me.Поле45, "\#mm\/dd\/yyyy\#") | |
|
| |
|
|
|
| а если я делаю вот так:
Me.Filter = "[Дата_выполнения] Between Me.Поле43 And Me.Поле45"
То мне предлагается сначала ввести значения полей и тогда он все показывает как нужно.
но у меня же уже все значения введены. | |
|
| |
|
|
|
|
| Нет, запрос не видит значения Me.Поле43 и Me.Поле45.
Надо писать так: Me.Filter = "[Дата_выполнения] Between Forms![frmDela]![Поле43] And Forms![frmDela]![Поле45]" | |
|
| |
|
|
|
| а я написала просто Поле43 и Поле45 - это плохо?
Наверное, если вдруг будет такое же поле в проекте в другой форме, может возникнуть ошибка? | |
|
| |
|
|
|
| Не вижу где, полный текст покажите. | |
|
| |
|
|
|
| А в этом случае надо писать так:
Me.Filter = "[Дата_выполнения] Between " & Format$(Me.Поле43, "\#mm\/dd\/yyyy\#") & " And " & Format$(Me.Поле45, "\#mm\/dd\/yyyy\#") | |
|
| |
|
|
|
| О, ВОТ так лучше всего. Спасибо | |
|
| |
|
|
|
| Блин, снова не получается.
Вот, что получается при любом работающем варианте.
Он в первый раз срабатывает и потом какую бы я дату в полях 43 и 45 не ставил, он все время фильтрует по датам, которые были указаны в первый раз и так до закрытия формы. То есть фильтр срабатывает только один раз. Остальные фильтры работают как часы.
Я говорю вот об этом фильтре. Сейчас я его сделала пока вот так.
Me.Filter = "[Дата_выполнения] Between Forms![f_Affairs]![Поле43] And Forms![f_Affairs]![Поле45] and [Отметка_о_выполнении] = 'не выполнено' " | |
|
| |
|
|
|
| А так:
Me.Filter = "([Дата_выполнения] Between Forms![f_Affairs]![Поле43] And Forms![f_Affairs]![Поле45]) AND ([Отметка_о_выполнении] = 'не выполнено')"
Добавил круглые скобки. | |
|
| |
|
75 Кб. |
|
| Все равно. Теперь появляется окно с просьбой ввести значение для поля Дата1.
Вот файлик. | |
|
| |
|
71 Кб. |
|
| А у меня заработало. Подробности в коде. | |
|
| |
|