|
|
|
| Здравствуйте. Недавно наткнулся на стопор.
Предстояло решить такую задачу.
Есть таблица Договора: № договора и дата договора.
Задача: сделать запрос, чтобы у меня выводилось:
Январь 4шт.
Февраль 10шт.
И т.д.
Как выводить дату в месяц, я знаю, и как посчитать количество тоже. Беда в том, что при группировке в запросе не происходит объединение допустим тех договоров, которых за январь, так как даты разные и следственно функция Count не может посчитать количество и выдает 1.
Вопрос: как сгруппировать разные даты одного месяца? И как решить эту казалось бы не очень сложную задачку? | |
|
| |
|
|
|
| Для поля дата используйте ф-ию Month по результату ф-ии делайте группировку и из запрса уберите поле дата | |
|
| |
|
|
|
| Для поля дата используйте ф-ию Month по результату ф-ии делайте группировку и из запрса уберите поле дата
|
Если честно не догоняю. Хорошо. Делаю запрос:
Пишу выражения для поле дата: Month([ДатаДоговора]), выдает по результату функции с группировкой цифры: 1, 2, 3, 4...ну это я понимаю месяцы. А потом зачем убирать поле ДАТА, и как вывести количество по месяцам? | |
|
| |
|
|
|
| имхо, вы хамите, но я отвечу
в вашем случае запрос может выглядеть ПРИМЕРНО так:
select Format(ПолеДата,"mmmm") as [Месяц],count(ПолеПустьДажеиДата) as [Кол_во]
from ВашаТаблица
group by Format(ПолеДата,"mmmm")
|
но здесь возникает вопрос - куда девать года?
ответ: можно в условии where прописать выборку по годам
можно выводить месяц - и год (в такмо случае Format(ПолеДата,"mmmm yyyy"))
?format(date,"mmmm yyyy")
Апрель 2009
|
| |
|
| |
|
|
|
| Если честно, то я не хамил...просто не совсем понял...но все равно большое спасибо.. | |
|
| |
|
|
|
| ok :) ну, помогло хоть что-то? | |
|
| |
|
|
|
| Если не ошибаюсь :
[Поле1]=Dcount ( "Поле", "Таблица", дата Between #01.01.2009# and #01.31.2009# | |
|
| |
|
|
|
| Большое спасибо, попробую. | |
|
| |
|
|
|
| Чего-то на синтаксис ругается? Хотя вроде скобку закрыл | |
|
| |
|
|
|
| [Поле1]=Dcount ( "Поле", "Таблица", "[дата] Between #01.01.2009# and #01.31.2009#")
Извиняюсь....попробуйте вот так.... | |
|
| |
|
|
|
| Извеняюсь за тупой вопрос, выражение, где писать в форме или в запросе??? | |
|
| |
|
|
|
| Писать в Форме, вот например:
Private Sub Form_AfterUpdate()
[Поле24] = DCount("[Поле]", "Таблица", "[Поле1] = 'ВА'")
или при загрузке:
Private Sub Form_Load()
[Поле24] = DCount("[Поле]", "Таблица", "[Поле1] = 'ВА'") | |
|
| |
|
|
|
| Все равно как-то криво выходит.
Что такое "[Поле1] = 'ВА'" ????
И если в форме, то это я так понимаю в ленточной нужно????
Мне нужен вот такойрезльтат.
Месяц | Количество договоров
Январь 10
Февраль 4 | |
|
| |
|
6 Кб. |
|
| Вот база, можно на ней продимонстрирвать? | |
|
| |
|
14 Кб. |
|
| Ну так и делайте....
создавайте поле с надписью Январь а в загрузке или при обновлении ставьте то что я писал выше....ВА это мое а вы вставляйте [дата] between......
Вот посмотрите... | |
|
| |
|
|
|
|
| Большое спасибо за ПОМОЩЬ!!! | |
|
| |
|
16 Кб. |
|
| Ну я конечно далек от всего, но может так что прояснит?
Очень аригинальный расклад у Василия, но, стесняюсь поинтересоваться, а если в феврале будет 29 дней, что тогда? И на каждый год прогу обновлять придется? | |
|
| |
|
|
|
| Goblin, вот это наблюдательность! Я на счёт 29 февраля :-)
У Вас же подход более основательный. Только тут уже писали, что надо что-то сделать с годом. А Вам не надо увлекаться с IIF. Для форматирования названий месяца используйте функцию Format(#1/01/2009#, "mmmm"). А чтобы упорядочить месяцы по порядку можно ещё сначала поставить номер месяца ;-) | |
|
| |
|
16 Кб. |
|
| Первое. Спасибо за подсказку с функцией, обязательно попробую, так как все делаю через IIF. Привычка.
С годом проблем никогда не было. Есть соответствующая функция. Можно и по дням расписать. Одно время тоже через IIF(DatePart("W";([Поле])) делал.
Вопрос стоял по месяцам. И на счет упорядочения месяцев полностью согласен, сортировка по номеру может и в отчете быть. Я же просто пытался на примере показать решение проблем по месяцам. Пристегнул с годами.
У вас примерчика по отбору данных по 2 и более полям таблицы не найдется? | |
|
| |
|
|
|
| На счёт года имелось в виду то, что группировать-то целесообразно месяцы одного года :-) О чём и писал Кабан.
По двум и более полям отбор делается элементарно в предложении WHERE можно применять логические операторы AND, OR. Например, WERE Data = #1.1.2009# AND Nomer > 5 | |
|
| |
|
|
|
| На счет условий понятно. Я имел в виду отбор записей как у sample в примере, только добавить еще одно поисковое поле. Но попробую установить такое условие. | |
|
| |