powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / дни рождений
25 сообщений из 39, страница 1 из 2
дни рождений
    #32776612
mursilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста люди.


SELECT днирожден.Фио, днирожден.[Дата рождения]
FROM днирожден
WHERE (((Format([днирожден].[Дата рождения],"dd/\mm"))=Format(Date(),"dd/\mm")));

есть такой запрос, который выдает у кого сегодня день рождения, а как сделать чтобы сообщалось заранее за день или за два
...
Рейтинг: 0 / 0
дни рождений
    #32776636
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
SELECT Фио, [Дата рождения]
FROM днирожден 
WHERE Month(Дата рождения) =Month(Date()) And Day(Дата рождения)>=Day(Date()) 
...
Рейтинг: 0 / 0
дни рождений
    #32776749
Раз (1)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витал
Код: plaintext
1.
2.
SELECT Фио, [Дата рождения]
FROM днирожден 
WHERE Month(Дата рождения) =Month(Date()) And Day(Дата рождения)>=Day(Date()) 

Такая конструкция, насколько я понял, вернет все дни рождения до конца текущего месяца. А если 31-го числа запрашиваем? : )

Mожно например так:
Код: plaintext
1.
2.
3.
WHERE
  DateSerial(Year(Now()), Month([Дата рождения]), Day([Дата рождения]))>=DateSerial(Year(Now()), Month(Now()), Day(Now())) AND
  DateSerial(Year(Now()), Month([Дата рождения]), Day([Дата рождения]))<DateSerial(Year(Now()), Month(Now()), Day(Now())+ 2 )
...
Рейтинг: 0 / 0
дни рождений
    #32776970
mursilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!!!
...
Рейтинг: 0 / 0
дни рождений
    #32780640
<Блин, красиво, а я в свое время такой огород городил! Ну вобщем сделал все через .. Житомир!!!
...
Рейтинг: 0 / 0
дни рождений
    #32780690
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Красиво, но неправильно :)

А если мы 31 декабря запрашиваем ,а имярек имел счастье родится 1 января ?
...
Рейтинг: 0 / 0
дни рождений
    #32780709
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
[днирожден].[Дата рождения] BETWEEN Date() AND DateAdd("d", 2 , Date())
...
Рейтинг: 0 / 0
дни рождений
    #32780798
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 (c)VIG

Все будет правильно, при 31 декабря выражение
Код: plaintext
DateSerial(Year(Now()), Month(Now()), Day(Now())+ 2 )
даст 2 января
...
Рейтинг: 0 / 0
дни рождений
    #32780966
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xax_nv2 (c)VIG

Все будет правильно, при 31 декабря выражение
Код: plaintext
DateSerial(Year(Now()), Month(Now()), Day(Now())+ 2 )
даст 2 января
Да что вы говорите?
авторWHERE
DateSerial(Year(Now()), Month([Дата рождения]), Day([Дата рождения]))>=DateSerial(Year(Now()), Month(Now()), Day(Now())) AND
DateSerial(Year(Now()), Month([Дата рождения]), Day([Дата рождения]))<DateSerial(Year(Now()), Month(Now()), Day(Now())+2)
А что даст выражение, выделенное красным, если сегодня 31 декабря ?
...
Рейтинг: 0 / 0
дни рождений
    #32781023
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так, как будто, должно показывать всех, у кого сегодня, завтра и послезавтра

Код: plaintext
1.
WHERE
DateDiff('y',Date(),DateAdd('yyyy',DateDiff('yyyy',[Дата рождения],Date()),[Дата рождения])) between  0  AND  2  

(с выражением лица)
...
Рейтинг: 0 / 0
дни рождений
    #32781032
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если чуть аккуратнее на предмет Null-значений, то так

Код: plaintext
1.
2.
3.
4.
WHERE
(
([Дата рождения] IS NOT NULL ) AND
( DateDiff('y',Date(),DateAdd('yyyy',DateDiff('yyyy',[Дата рождения],Date()),[Дата рождения])) between  0  AND  2 )
)

(с выражением лица)
...
Рейтинг: 0 / 0
дни рождений
    #32781064
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Victosha

А чем плохо моё условие?
Код: plaintext
[днирожден].[Дата рождения] BETWEEN Date() AND DateAdd("d", 2 , Date())
...
Рейтинг: 0 / 0
дни рождений
    #32781069
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlTis2 Victosha

А чем плохо моё условие?
Код: plaintext
[днирожден].[Дата рождения] BETWEEN Date() AND DateAdd("d", 2 , Date())


Тем, что оно будет показывать только тех кто родился точно сегодня, или БУДЕТ рожден завтра или послезавтра.
То есть для роддома в части родившихся сегодня до конца дня - работать будет.
А в части завтра и послезавтра - кто заполнит чиселки для роддома?
...
Рейтинг: 0 / 0
дни рождений
    #32781081
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Victosha
Красиво! Но тоже неправильно :)
...
Рейтинг: 0 / 0
дни рождений
    #32781099
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(c)VIG2 Victosha
Красиво! Но тоже неправильно :)

я не говорил, что "правильно".

но почему неправильно, пока не вижу.

может пример какой для слепых...

кстати по теме - может кто скажет бестолковому, чем 'd' от 'y'
отличается?
...
Рейтинг: 0 / 0
дни рождений
    #32781103
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha
но почему неправильно, пока не вижу.

может пример какой для слепых...

кстати по теме - может кто скажет бестолковому, чем 'd' от 'y'
отличается?
Потому ,что твой вариант (который в сущности является более компактной версией того ,что написал Раз(1)) , точно также не учитывает случай, когда день рождение выпадает на начало января.
Специально для слепых :)
Предположим ,что VIG родился 1 января 19хх года.31 декабря 2004 г тебя вызывает начальство и просит срочно подготовить приказ о премировании всех ,у кого день рождения в ближашие 3 дня.Как ты думаешь ,получит VIG премию ? :)
...
Рейтинг: 0 / 0
дни рождений
    #32781110
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 (с)VIG
хороший пример, оказывается.
сидю, морщю репу...

(с выражением лица)
...
Рейтинг: 0 / 0
дни рождений
    #32781118
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Jet4 как будто такой вариант рабочий
Код: plaintext
1.
2.
3.
(
([Дата рождения] Is Not Null) And
(DateDiff('d',[tdate],DateAdd('yyyy',Round(DateDiff('m',[Дата рождения],[tdate])/ 12 , 0 ) ,[Дата рождения])) between  0  AND  2 )
)

для 97-го придется писать так (там Round, кажется, не было)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
WHERE
 (
([Дата рождения] Is Not Null) And
(
 (DateDiff('y',[tdate],DateAdd('yyyy',DateDiff('yyyy',[Дата рождения],[tdate]),[Дата рождения])) Between  0  And  2 ) 
 OR
 (DateDiff('y',[tdate],DateAdd('yyyy',DateDiff('yyyy',[Дата рождения],[tdate])+ 1 ,[Дата рождения])) Between  0  And  2 ) 
)
);
(с выражением лица)
...
Рейтинг: 0 / 0
дни рождений
    #32781123
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот ёлки - а ведь был round-то. Это яво в VBA не было...

http://support.microsoft.com/default.aspx?scid=kb;en-us;239104

стало быть пока

Код: plaintext
1.
2.
3.
(
([Дата рождения] Is Not Null) And
(DateDiff('d',[tdate],DateAdd('yyyy',Round(DateDiff('m',[Дата рождения],[tdate])/ 12 , 0 ) ,[Дата рождения])) between  0  AND  2 )
)

как "кандидата" оставляю...

что-то мне подсказывает, что пора спросить с (c)VIG-а

- А как правильно?




(с выражением лица)
...
Рейтинг: 0 / 0
дни рождений
    #32781128
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
дни рождений
    #32781150
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha AlTis2 Victosha

А чем плохо моё условие?
Код: plaintext
[днирожден].[Дата рождения] BETWEEN Date() AND DateAdd("d", 2 , Date())


Тем, что оно будет показывать только тех кто родился точно сегодня, или БУДЕТ рожден завтра или послезавтра.
То есть для роддома в части родившихся сегодня до конца дня - работать будет.
А в части завтра и послезавтра - кто заполнит чиселки для роддома?

мда...
а слона то я и не увидел.
...
Рейтинг: 0 / 0
дни рождений
    #32781161
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
замечание по предложенному варианту тут
http://www.sql.ru/forum/actualthread.aspx?tid=112504&pg=2#1104288

(с выражением лица)
...
Рейтинг: 0 / 0
дни рождений
    #32781195
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю такой вариант

Код: plaintext
1.
2.
3.
4.
WHERE 
(((DateSerial(Year(DateSerial(Year([Дата_рождения]),Month(Now()),Day(Now())+ 2 )),Month([Дата_рождения]),
Day([Дата_рождения])))>=DateSerial(Year([Дата_рождения]),Month(Now()),Day(Now())) 
And (DateSerial(Year(DateSerial(Year([Дата_рождения]),Month(Now()),Day(Now())+ 2 )),Month([Дата_рождения]),
Day([Дата_рождения])))<=DateSerial(Year([Дата_рождения]),Month(Now()),Day(Now())+ 2 )));"

Проверено - работает.

2 (c)VIG

А все-таки выражение DateSerial(Year(Now()), Month(Now()), Day(Now())+2) при 31 декабря даст 2 января!
...
Рейтинг: 0 / 0
дни рождений
    #32781200
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для желающих проверить -
...
Рейтинг: 0 / 0
дни рождений
    #32781201
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не хочет прикреплять файл...
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / дни рождений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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