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

Для степлера:
Есть функция CLng - если уж так охота из даты получить число и вывести его на печать или использовать в динамическом создании строк

2 Саныч:
Я понял, что переменные уже типа дата
Я хотел сказать, что у нас нет уверенности что эти перетенные содержат данные текущего года, т.е. там год точно тот?

+
Что-то еще не встал вопрос, тоды я поставлю :)

А что делать если нажен список людей с датами рождения (ну напрмер: с 15 декабря по 15 января)?
Так сказать в момент перехода года?
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637345
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вот сдеся как раз и нужно типа 38555....
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637348
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Steplerу меня в формате "дата" в таблице столбца "Datt(g)" значения типа 05/08/04.
Запросом хочу сделать отбор дат между 36888 и 38011
Что мне для ентого нуна сделать??
where твоеполе between 36888 and 38011

SteplerКстати 1 = 01.01.1900 (воскресенье), а вот 0= 00.01.1900 (суббота) - как это ???
00.01.1900 - это 31.12.1899.
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637358
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
paparomeЯ понял, что переменные уже типа дата
Я хотел сказать, что у нас нет уверенности что эти перетенные содержат данные текущего года, т.е. там год точно тот?
Угу. Дошло, согласен.

paparomeА что делать если нажен список людей с датами рождения (ну напрмер: с 15 декабря по 15 января)?
Так сказать в момент перехода года?
Тогда вместо and пишем or. :^)
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637360
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Никакие функции для преобразования не нужны .

paparomeКароче

Для степлера:
Есть функция CLng ...
paparome - спасибо, сделал - работает
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637364
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Без CLng тоже должно. На что спорим?
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637380
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SteplerКстати 1 = 01.01.1900 (воскресенье), а вот 0= 00.01.1900 (суббота) - как это ???
00.01.1900 - это 31.12.1899.[/quot]
У меня ПК выдает 00.01.1900 !!!! а Все рарьше воспринимает как текст...
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637383
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычБез CLng тоже должно. На что спорим?
Саныч, я не знаю- могет настройки , но у меня не работает...
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637402
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычБез CLng тоже должно. На что спорим?
Саныч - не надо
Если динамически прикручивать даты к запросу, то просто так работать не будет (да что я тебе объясняю - ты и сам в курсе )
Код: plaintext
strSQL = "Select * From tbl1 Where date_fld between " & date1 & " and " & date2 & "
Код: plaintext
strSQL = "Select * From tbl1 Where date_fld between " & clng(date1) & " and " & clng(date2) & "
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637424
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparomeА что делать если нажен список людей с датами рождения (ну напрмер: с 15 декабря по 15 января)?
Так сказать в момент перехода года?

select * from ... where
(date1<=dateserial(year(date1),month(D_Rozhd),day(D_Rozhd))
and
dateserial(year(date1),month(D_Rozhd),day(D_Rozhd))<=date2)
or
(date1<=dateserial(year(date2),month(D_Rozhd),day(D_Rozhd))
and
dateserial(year(date2),month(D_Rozhd),day(D_Rozhd))<=date2)
or
((year(date1)+1)<year(date2))
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637430
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или, соответственно:

select * from ... where
(dateserial(year(date1),month(D_Rozhd),day(D_Rozhd)) between date1 and date2)
or
(dateserial(year(date2),month(D_Rozhd),day(D_Rozhd)) between date1 and date2)
or
((year(date1)+1)<year(date2))
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637431
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo

СУПЕР
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637441
Z75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Z75
Гость
To Geo
А в каком формате date1, date2 задавать. У меня в D_Rozhd например 01.01.80?
Как мне их задать 04.01.01 или 040101 или еще как?
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637448
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я проспорил про CLng. :^)
Но про Left - им все равно пользоваться низя.
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637473
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Z75
В формате даты. D_Rozhd - это поле типа дата? Так и оставь его имя как есть, не преобразовывай ничего.
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637930
Z75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Z75
Гость
Можете меня распнуть, но я так и не догнал как задать date1 и date2?
дд.мм.гг или ддммгг или гг.мм.дд. или как? Подмогните, плз
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637952
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Z75Можете меня распнуть, но я так и не догнал как задать date1 и date2?
дд.мм.гг или ддммгг или гг.мм.дд. или как? Подмогните, плз
Например, так:
в модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public date1 as date
public date2 as date

public function GetDate1() as date
  getdate1=date1
end function

public function GetDate2() as date
  getdate2=date2
end function

в запросе вместо date1/Date2 писать GetDate1()/GetDate2()
Перед выполнением запроса заполнить переменные нужными значениями.
...
Рейтинг: 0 / 0
Получить список именнинников
    #32637967
Z75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Z75
Гость
Спасибо, GEO. Заработало!
...
Рейтинг: 0 / 0
Получить список именнинников
    #32638309
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geoили, соответственно:

select * from ... where
(dateserial(year(date1),month(D_Rozhd),day(D_Rozhd)) between date1 and date2)
or
(dateserial(year(date2),month(D_Rozhd),day(D_Rozhd)) between date1 and date2)
or
((year(date1)+1)<year(date2))
Попробовал...
И не понял, что значение месяца - несущественно ???
В таком виде определяет только дату дня, а не месяца...

Могет я и не прав, но у меня вот в таком виде "проходит":
SELECT tabl.D_Rozhd, tabl.Fio
FROM tabl
WHERE (((CLng(DateAdd("yyyy",Format(Date(),"yyyy")-Format(tabl!D_Rozhd,"yyyy"),tabl!D_Rozhd)-37987))>=CLng(DateAdd("yyyy",Format(Date(),"yyyy")-Format([начало],"yyyy"),[начало])-37987) And (CLng(DateAdd("yyyy",Format(Date(),"yyyy")-Format(tabl!D_Rozhd,"yyyy"),tabl!D_Rozhd)-37987))<=CLng(DateAdd("yyyy",Format(Date(),"yyyy")-Format([конец],"yyyy"),[конец])-37987)))
WITH OWNERACCESS OPTION;
...
Рейтинг: 0 / 0
Получить список именнинников
    #32638354
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оригинально...
Вариант ВС, усложненный до неузнаваемости.
...
Рейтинг: 0 / 0
Получить список именнинников
    #32638484
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Z75Можете меня распнуть, но я так и не догнал как задать date1 и date2?
дд.мм.гг или ддммгг или гг.мм.дд. или как? Подмогните, плз
Не распнуть, а распять. Или расшесть. Их нельзя задавать ни так, ни так. Потому что это все варианты для типа String. А надо задавать как тип Date.
...
Рейтинг: 0 / 0
Получить список именнинников
    #32781133
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geoили, соответственно:

select * from ... where
(dateserial(year(date1),month(D_Rozhd),day(D_Rozhd)) between date1 and date2)
or
(dateserial(year(date2),month(D_Rozhd),day(D_Rozhd)) between date1 and date2)
or
((year(date1)+1)<year(date2))

было - значит было.
вот зачам тут ((year(date1)+1)<year(date2))
пока не понял.

на нулл тоже неплохо бы проверять.

Ну, а "мой" вариант превращается в

(
([Дата рождения] Is Not Null) And
DateAdd('yyyy',Round(DateDiff('m',[Дата рождения],[tdate])/12,0) ,[D_Rozhd]) between [StartDate] AND [LastDate])
)

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

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

У предложенного мной варианта "глубина проницания" (разность между границами интервала) - полгода. Дальше не работает.

исправления:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
(
([D_Rozhd] Is Not Null) And
(
DateAdd('yyyy',Round((DateDiff('m',[D_Rozhd],[StartDate])/ 12 ), 0 ),[Дата рождения]) between  [StartDate] AND [LastDate]
OR
 DateAdd('yyyy',Round((DateDiff('m',[D_Rozhd],[LastDate])/ 12 ), 0 ),[Дата рождения]) between  [StartDate] AND [LastDate]
)
)

или эквивалентное


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
(
([D_Rozhd] Is Not Null) And

(
DateAdd('yyyy',Round((DateDiff('m',[D_Rozhd],[StartDate])/ 12 ), 0 ),[Дата рождения]) >= [StartDate] 
OR
 DateAdd('yyyy',Round((DateDiff('m',[D_Rozhd],[LastDate])/ 12 ), 0 ),[Дата рождения]) <= [LastDate]
)
)

по существу неотличимы от варианта Geo, а потому - неинтересны.

так што - я ушпокоилси...

(с выражением лица)
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Получить список именнинников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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