Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Количество договоров (записей) за месяц
 
 автор: mulrus   (23.04.2009 в 12:45)   личное сообщение
 
 

Здравствуйте. Недавно наткнулся на стопор.

Предстояло решить такую задачу.

Есть таблица Договора: № договора и дата договора.

Задача: сделать запрос, чтобы у меня выводилось:

Январь 4шт.
Февраль 10шт.

И т.д.

Как выводить дату в месяц, я знаю, и как посчитать количество тоже. Беда в том, что при группировке в запросе не происходит объединение допустим тех договоров, которых за январь, так как даты разные и следственно функция Count не может посчитать количество и выдает 1.

Вопрос: как сгруппировать разные даты одного месяца? И как решить эту казалось бы не очень сложную задачку?

  Ответить  
 
 автор: Гамлет   (23.04.2009 в 12:51)   личное сообщение
 
 

Для поля дата используйте ф-ию Month по результату ф-ии делайте группировку и из запрса уберите поле дата

  Ответить  
 
 автор: mulrus   (23.04.2009 в 13:12)   личное сообщение
 
 

Для поля дата используйте ф-ию Month по результату ф-ии делайте группировку и из запрса уберите поле дата



Если честно не догоняю. Хорошо. Делаю запрос:
Пишу выражения для поле дата: Month([ДатаДоговора]), выдает по результату функции с группировкой цифры: 1, 2, 3, 4...ну это я понимаю месяцы. А потом зачем убирать поле ДАТА, и как вывести количество по месяцам?

  Ответить  
 
 автор: Кабан   (23.04.2009 в 14:10)   личное сообщение
 
 

имхо, вы хамите, но я отвечу
в вашем случае запрос может выглядеть ПРИМЕРНО так:


select Format(ПолеДата,"mmmm") as [Месяц],count(ПолеПустьДажеиДата) as [Кол_во]
from ВашаТаблица
group by Format(ПолеДата,"mmmm")

но здесь возникает вопрос - куда девать года?
ответ: можно в условии where прописать выборку по годам
можно выводить месяц - и год (в такмо случае Format(ПолеДата,"mmmm yyyy"))


?format(date,"mmmm yyyy")
Апрель 2009

  Ответить  
 
 автор: mulrus   (23.04.2009 в 15:14)   личное сообщение
 
 

Если честно, то я не хамил...просто не совсем понял...но все равно большое спасибо..

  Ответить  
 
 автор: Кабан   (23.04.2009 в 15:21)   личное сообщение
 
 

ok :) ну, помогло хоть что-то?

  Ответить  
 
 автор: Василий   (23.04.2009 в 12:52)   личное сообщение
 
 

Если не ошибаюсь :

[Поле1]=Dcount ( "Поле", "Таблица", дата Between #01.01.2009# and #01.31.2009#

  Ответить  
 
 автор: mulrus   (23.04.2009 в 12:58)   личное сообщение
 
 

Большое спасибо, попробую.

  Ответить  
 
 автор: mulrus   (23.04.2009 в 13:13)   личное сообщение
 
 

Чего-то на синтаксис ругается? Хотя вроде скобку закрыл

  Ответить  
 
 автор: Василий   (23.04.2009 в 13:21)   личное сообщение
 
 

[Поле1]=Dcount ( "Поле", "Таблица", "[дата] Between #01.01.2009# and #01.31.2009#")

Извиняюсь....попробуйте вот так....

  Ответить  
 
 автор: mulrus   (23.04.2009 в 13:24)   личное сообщение
 
 

Извеняюсь за тупой вопрос, выражение, где писать в форме или в запросе???

  Ответить  
 
 автор: Василий   (23.04.2009 в 13:31)   личное сообщение
 
 

Писать в Форме, вот например:

Private Sub Form_AfterUpdate()
[Поле24] = DCount("[Поле]", "Таблица", "[Поле1] = 'ВА'")

или при загрузке:
Private Sub Form_Load()
[Поле24] = DCount("[Поле]", "Таблица", "[Поле1] = 'ВА'")

  Ответить  
 
 автор: mulrus   (23.04.2009 в 13:57)   личное сообщение
 
 

Все равно как-то криво выходит.

Что такое "[Поле1] = 'ВА'" ????
И если в форме, то это я так понимаю в ленточной нужно????


Мне нужен вот такойрезльтат.

Месяц | Количество договоров

Январь 10
Февраль 4

  Ответить  
 
 автор: mulrus   (23.04.2009 в 14:04)   личное сообщение
6 Кб.
 
 

Вот база, можно на ней продимонстрирвать?

  Ответить  
 
 автор: Василий   (23.04.2009 в 14:06)   личное сообщение
14 Кб.
 
 

Ну так и делайте....

создавайте поле с надписью Январь а в загрузке или при обновлении ставьте то что я писал выше....ВА это мое а вы вставляйте [дата] between......

Вот посмотрите...

  Ответить  
 
 автор: Василий   (23.04.2009 в 14:41)   личное сообщение
 
 

надеюсь так...

  Ответить  
 
 автор: mulrus   (23.04.2009 в 15:13)   личное сообщение
 
 

Большое спасибо за ПОМОЩЬ!!!

  Ответить  
 
 автор: Goblin   (23.04.2009 в 22:09)   личное сообщение
16 Кб.
 
 

Ну я конечно далек от всего, но может так что прояснит?

Очень аригинальный расклад у Василия, но, стесняюсь поинтересоваться, а если в феврале будет 29 дней, что тогда? И на каждый год прогу обновлять придется?

  Ответить  
 
 автор: Denis V.   (23.04.2009 в 22:24)   личное сообщение
 
 

Goblin, вот это наблюдательность! Я на счёт 29 февраля :-)
У Вас же подход более основательный. Только тут уже писали, что надо что-то сделать с годом. А Вам не надо увлекаться с IIF. Для форматирования названий месяца используйте функцию Format(#1/01/2009#, "mmmm"). А чтобы упорядочить месяцы по порядку можно ещё сначала поставить номер месяца ;-)

  Ответить  
 
 автор: Goblin   (23.04.2009 в 22:47)   личное сообщение
16 Кб.
 
 

Первое. Спасибо за подсказку с функцией, обязательно попробую, так как все делаю через IIF. Привычка.
С годом проблем никогда не было. Есть соответствующая функция. Можно и по дням расписать. Одно время тоже через IIF(DatePart("W";([Поле])) делал.
Вопрос стоял по месяцам. И на счет упорядочения месяцев полностью согласен, сортировка по номеру может и в отчете быть. Я же просто пытался на примере показать решение проблем по месяцам. Пристегнул с годами.

У вас примерчика по отбору данных по 2 и более полям таблицы не найдется?

  Ответить  
 
 автор: Denis V.   (24.04.2009 в 11:29)   личное сообщение
 
 

На счёт года имелось в виду то, что группировать-то целесообразно месяцы одного года :-) О чём и писал Кабан.
По двум и более полям отбор делается элементарно в предложении WHERE можно применять логические операторы AND, OR. Например, WERE Data = #1.1.2009# AND Nomer > 5

  Ответить  
 
 автор: Goblin   (24.04.2009 в 15:16)   личное сообщение
 
 

На счет условий понятно. Я имел в виду отбор записей как у sample в примере, только добавить еще одно поисковое поле. Но попробую установить такое условие.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList