Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Записей за месяц  [new]
avirin
Member

Откуда:
Сообщений: 74
Имеется в таблице поле "Дата заполнения" формата "Дата", вот хотелось бы найти все записи в течении месяца или между двумя датами.
Как можно сделать попроще? Поиском прошел, но ни чего не нашел.
Заранее всем спасибо!

К сообщению приложен файл (Месяц заполнения.rar - 37Kb) cкачать
30 мар 07, 14:54    [3961495]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
ByKiS
Member

Откуда:
Сообщений: 3760
SELECT База.Имя, База.[Дата заполнения]
FROM База
WHERE (((База.[Дата заполнения])>[Дата от])) OR (((База.[Дата заполнения])<[Дата до]));
или
SELECT База.Имя, База.[Дата заполнения]
FROM База
WHERE (((База.[Дата заполнения]) Between [Дата от] And [Дата до]));
30 мар 07, 15:01    [3961541]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
Ирча
Member

Откуда: глубокая тундра ;)
Сообщений: 1874
Если количество - Dcount()
Если сами зеписи - то Between для интервала дат, или
where manth([Дата заполнения])=[месяц] and year([Дата заполнения])=[год]
30 мар 07, 15:02    [3961551]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
George-III
Member

Откуда:
Сообщений: 3689
Можно вот так для любого месяца:
SELECT Count(*) FROM Table WHERE Format([Table].[MyDate],"mmmm")="Символьное название месяца"

Можно так для диапазона дат:
SELECT Count(*) FROM Table WHERE 
[Table].[MyDate] Between #mm/dd/yyyy# and #mm/dd/yyyy#
30 мар 07, 15:06    [3961587]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Если за месяц, то можно так
SELECT База.Имя, База.[Дата заполнения]
FROM База
WHERE Month(База.[Дата заполнения]) = НомерМесяца;
А НомерМесяца можно получить как ссылку из формы, или как параметр запроса. Тогда будет запрашиваться каждый раз при выполнении запроса.
30 мар 07, 15:06    [3961589]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Да, конечно еще и год надо вставить
30 мар 07, 15:07    [3961606]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
George-III
Member

Откуда:
Сообщений: 3689
Чего-то меня клинит, показалось, что надо найти кол-во записей...

Вот так :
SELECT * FROM Table WHERE Format([Table].[MyDate],"mmmm")="Символьное название месяца"

Вот так:

SELECT * FROM Table WHERE Table].[MyDate] Between #mm/dd/yyyy# and #mm/dd/yyyy#
30 мар 07, 15:08    [3961611]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
George-III
Member

Откуда:
Сообщений: 3689
Не забудьте год, а то если база ведётся несколько лет, получите за искомый месяц за несколько лет
30 мар 07, 15:11    [3961627]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
avirin
Member

Откуда:
Сообщений: 74
Что-то у меня не получается. Пожалуйста объясните попдробнее для чайника.
Надо чтобы в форме ПОИСК ввел месяц или две даты, нажал кнопочку и открылась форма1 для этих дат.
30 мар 07, 15:49    [3961960]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27548
Для того, чтобы форма открывалась для заданного месяца, перепишите stLinkCriteria в процедуре на Кнопка6:
stLinkCriteria = "Month([Дата заполнения])=" & Month(Me![Дата заполнения]) _
& " And Year([Дата заполнения])= " & Year(Me![Дата заполнения])


Если нужно для интервала, то для начала на форме нужно сделать второе датное поле. Назовите его скажем, [Дата заполнения1]. И тогда stLinkCriteria для интервала дат перепишется в виде:
stLinkCriteria = "[Дата заполнения] Between " _
& "#" & Format(Me![Дата заполнения], "mm\/dd\/yyyy") & "# " _
& "And #" & Format(Me![Дата заполнения1], "mm\/dd\/yyyy") & "# "
30 мар 07, 18:28    [3962966]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
avirin
Member

Откуда:
Сообщений: 74
Еще один вопрос встал, как состыковать?

Есть такая кнопка:
stLinkCriteria = IIf(Not IsNull(Me![Механик]), "[Механик]='" & Me![Механик] & "' AND ", "") & _
IIf(Not IsNull(Me![Договор на]), "[Договор на]='" & Me![Договор на] & "' AND ", "")
If Len(stLinkCriteria) > 0 Then stLinkCriteria = Left$(stLinkCriteria, Len(stLinkCriteria) - 5)
А как вместо (Договор на) вписать
stLinkCriteria = "Month([Дата заполнения])=" & Month(Me![Дата заполнения]) _
& " And Year([Дата заполнения])= " & Year(Me![Дата заполнения])
Пробовал, но ума не хватает, все ошибка.
2 апр 07, 12:05    [3967009]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Вместо строки
IIf(Not IsNull(Me![Договор на]), "[Договор на]='" & Me![Договор на] & "' AND ", "")
написать:
IIf(Not IsNull(Me![Дата заполнения]), "Month([Дата заполнения])=" & Month(Me![Дата заполнения]) _
& " And Year([Дата заполнения])= " & Year(Me![Дата заполнения]) & " AND ", "")
2 апр 07, 12:31    [3967179]     Ответить | Цитировать Сообщить модератору
 Re: Записей за месяц  [new]
avirin
Member

Откуда:
Сообщений: 74
Спасибо.
Все заработало.
2 апр 07, 13:45    [3967673]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить