Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отбор данных за прошедший месяц / 13 сообщений из 13, страница 1 из 1
24.10.2015, 15:18
    #39085566
1234_5678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
запрос открывается 1-го числа
задаю условие отбора в запросе
Код: vbnet
1.
WHERE Month([Табл1]![Событие])=Month(Date())-1

выводятся данные за прошедший месяц, но за все годы.
добавляю
Код: vbnet
1.
WHERE Month([Табл1]![Событие])=Month(Date())-1 AND Year([Табл1]![Событие])=Year(Date())

всё работает...кроме января - данные за прошлогодний декабрь пропадают
городить выражение с IIF, что-ли?
...
Рейтинг: 0 / 0
24.10.2015, 15:48
    #39085574
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
1234_5678,

положим, можно отванговать, что [Событие] - As Date...
Но, как отванговать, что ты хочешь...

Все работает как написано. С чего бы ждать декабрь прошлого года, если ты сам ограничиваешь выборку годом текущим?...

Хочешь оперировать не диапазонами дат, а номерами месяцев - учти что 1-1 = 12. Что при этом происходит с годом?..
.
...
Рейтинг: 0 / 0
24.10.2015, 16:02
    #39085576
1234_5678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
да, событие, конечно, as date (а ф-ции month и year к чему-то ещё можно применять?)
я и не жду прошлогодний декабрь при таком условии, я просто написал как я отсеял данные за все годы.
а задача обозначена в названии темы: получать данные за прошедший месяц, без разницы - май он или декабрь
...
Рейтинг: 0 / 0
24.10.2015, 16:29
    #39085583
datediff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
where datediff('m', [Событие], date())=1
...
Рейтинг: 0 / 0
24.10.2015, 16:46
    #39085590
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
1234_5678,

F1 - представление даты.

Вот тебе конец предыдущего месяца: (Date - Day(Date))
Вот тебе его начало: (Date - Day(Date)) - Day(Date - Day(Date)) + 1

Оно?
.
...
Рейтинг: 0 / 0
24.10.2015, 17:07
    #39085596
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
Код: vbnet
1.
IIf(Month([ctl2])=1;Month(DateAdd("d";-1;"01" & Mid([ctl2];InStr([ctl2];".")))) & "." & Year([ctl2])-1;Month(DateAdd("d";-1;"01" & Mid([ctl2];InStr([ctl2];".")))) & "." & Year([ctl2])) 

ctl2 поле с датой
без IF наряд-ли получится
...
Рейтинг: 0 / 0
24.10.2015, 17:21
    #39085600
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
пардоньте-так попроще будет:
Код: vbnet
1.
2.
месяц: Month(DateAdd("m";-1;[ctl2]))
год: IIf(Month([ctl2])=1;Year([ctl2])-1;Year([ctl2]))
...
Рейтинг: 0 / 0
24.10.2015, 17:25
    #39085603
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
sdku,

ты уверен, что на локаль можно забить?
Как и на явное приведение типов через Format(...) ?

И еще... Самое главное, пожалуй.
В чем потаенный смысл отказа от целочисленной арифметики в пользу ворочания строк?
.
...
Рейтинг: 0 / 0
24.10.2015, 17:59
    #39085614
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
1234_5678,
Код: sql
1.
2.
3.
SELECT [Табл1].*
FROM [Табл1]
WHERE [Событие] Between DateSerial(Year(Date()),Month(Date())-1,1) And DateSerial(Year(Date()),Month(Date()),0)
...
Рейтинг: 0 / 0
24.10.2015, 18:05
    #39085618
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
1234_5678, или так...
Код: sql
1.
2.
3.
4.
PARAMETERS dtmDate DateTime = Date();
SELECT [Табл1].*
FROM [Табл1]
WHERE [Событие] Between DateSerial(Year(dtmDate),Month(dtmDate)-1,1) And DateSerial(Year(dtmDate),Month(dtmDate),0)
...
Рейтинг: 0 / 0
24.10.2015, 18:13
    #39085622
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
Считаю что не надо вообще этого делать:иногда возникает необходимость распечатать отчет за -3 месяц-и как быть?
Переставлять системное время-это займет примерно столько же времени как и ввести диапазон дат(или месяц и год)
...
Рейтинг: 0 / 0
24.10.2015, 18:19
    #39085626
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
sdku, не очень понимаю зачем додумывать за ТС его ТЗ?
Ответ - ничего не надо менять (тем более системное время!), достаточно указать количество месяцев в запросе ( Month(dtmDate)-1 )
...
Рейтинг: 0 / 0
24.10.2015, 19:06
    #39085643
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор данных за прошедший месяц
sdkuСчитаю что не надо вообще этого делать :иногда возникает необходимость распечатать отчет за -3 месяц-и как быть ?
Переставлять системное время -это займет примерно столько же времени как и ввести диапазон дат(или месяц и год)
Оставить без внимания это невозможно. Как и экзерсисы со строками выше.
Ограничусь лишь выражением полнейшего недоумения...
Типа - ник угнали.
.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отбор данных за прошедший месяц / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]