Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > как отловить кто дату когда у человека день рожден |
Автор: Berliner 18.8.2005, 13:32 |
Здраствуйте вот такая ситуация! Есть таблица(Paradox "people.db") В ней поля Фамилия Имя Навыки Дата рождения тип Date как сделать так чтобы пользователь ввел период(2 даты) в 2 поля едит1 и едит2 задал например 1.02.2005 по 28.02.2005 и ком нашел у кого день рождения в этом месяце подскажите самый простой вариант пожалуста |
Автор: Pakshin A. S. 18.8.2005, 15:15 | ||
|
Автор: Guest 18.8.2005, 23:04 |
Спасибо за помощь! Опс я тоже так думал! НО..... по этому запросу компьютер выберет людей которые родились с и по Например с 1.08.2005 по 31.08.2005 и выберет тех людей которые родились в этот промежутое - это хорошо но надо выбрать и поздравить сех людей которые родились в Августе! и тех кому 25, 50,21 и т.д. всех у кого день рождения в этом периоде с 1.08.2005 по 31.08.2005 |
Автор: Guest 18.8.2005, 23:12 |
А не только те которые родились в этом месяце А иначе с 1.08.2005 по 31.08.2005 отберет только младенцев а поздравить других людей постарше? Спасиб за внимание |
Автор: bursa 19.8.2005, 08:33 |
В теме http://forum.vingrad.ru/index.php?showtopic=61283 уже было. Исправь код SergeBS на CalcDay := FormatDateTime('mmdd', DateFld); т.е. месяцы вперед. И фильтруй Query1.Filter:='CalcDay>=+''''+'0106'+''''+ and Query1.Filter<+''''+'0107'+''''; |
Автор: Pakshin A. S. 19.8.2005, 08:50 | ||||
Что-то непонятно.... По-полочкам: нам нужно выбрать всех людей, у кого днюха в данном промежутке, но нам нужно всех поздравлять или только тех, кто старше какого-то возраста? Или нам нужно выбрать всех, кому "за 30" и всех, у кого днюха в данном промежутке... |
Автор: Berliner 19.8.2005, 11:10 | ||||
для Pakshin Нужно:
вводим в одно тесковое поле дату с а в другое текстовое поле дату по, по нажатию ктопки чтобы отловило людей у кого день рождения в данном промежутке ![]()
для bursa Спасиб за ссылку но я мало что понял ты можешь мне поджробнее каждую строку кода пояснить(если не трудно) и где там правильный код ![]() |
Автор: bursa 19.8.2005, 15:55 | ||||
Создаешь вычисляемое поле CalcDay На обработчике OnCalcField
И меняешь
Месяцы вперед, чтобы,к примеру, 7 января было меньше 3 апреля, т.к. '0107'<'0403' а не наоборот '0701'>'0304' |
Автор: Pakshin A. S. 19.8.2005, 16:21 | ||||
А это что?
Выбор только тех полей, где поле находтся в промежутке... |
Автор: Berliner 19.8.2005, 19:29 | ||
этот код выберет людей которые родились с даты введенной в текстовое поле1 и между датой введенной в текстовое поле2. ЗАДАЧА ТАКАЯ: ПОЗДРАВИТЬ СОТРУДНИКОВ С ДНЕМ РОЖДЕНИЯ в таблице есть дата рождения. Например, секретарю надо поздравить тех которые родились в августе(ТОЛЬКО В АВГУСТЕ)! Приведенный запрос НЕ ВЫБЕРЕТ Иванова Ивана который родился 14 августа 1965 года (если задать с 01.08.2005) по (31.08.2005) А если написать в полях с 1.01.1910 по 1.08.2005 года выберет всех которые родились и августе1938 и в апреле 1977 и мае1983 короче всех- из этого промежутка( А ВСЕХ НЕ НАДО НАДО ТЕХ КОТОРЫЕ РОДИЛИСЬ В АВГУСТЕ с 01.08. любого года по 31.08 любого года). Секретарю надо выбрать всех у которых день рождения в периоде ИСПОЛЬЗУЯ ТОЛЬКО ДАТУ И МЕСЯЦ- ИГНОРИРУЯ ГОД. извините,а теперь понятно? Добавлено @ 19:38 To bursa а можно полный код и поподробнее(еще подробнее) как это задача решаема вместе с кодом плиз( правда еще книжку сегодня гляну) и логику( я логику решения задачи не понял) что код делает и сам код полный плиз Извините если достал |
Автор: Berliner 19.8.2005, 19:59 |
P.S. Еще раз коротко для прояснения ситуации нужно чтобы программа показала кто родился за определенный период, в период будут включаться с "число, месяц" по "число, месяц" , но год -игнорировать. Игнорировать год -сделать период с "число, месяц" по "число,месяц" а года ,чтобы все в условие входили. Т.е. вылавливать -учитывая только дату и месяц рождения |
Автор: offline 19.8.2005, 20:24 | ||||
не знаю как в Парадоксе, а в Аксесе это можно сделать так
т.е. пусть секретарь выбирает тоько месяц. затем берешь пое даты и переводишь в строковую переменную а затем ищешь у кого месяц выбранный секрктадем, в примере декабрь (12) а затем можно уже использовать это поле как дату АДОЗапрос....ASDate , кажись так. Но это все к Аксесу, не знаю, есть ли в ПАРАДОКСЕ ТАКАЯ ФУНКЦИЯ, НО ДУМАЮ ИДЕЯ ПОНЯТНА ![]() поздно увидел твое дополнение касаемое даты. но и дату можно поставить например 23
|
Автор: Berliner 19.8.2005, 22:04 |
Спасиб а может кто знает как в парадоксе сделать? Завтра буду пробывать реализоавть идею что написал kirilllius |
Автор: Pakshin A. S. 20.8.2005, 08:58 | ||
ТА тот случай, если не попрет вышесказанное... |
Автор: Berliner 20.8.2005, 14:37 |
для Pakshin: Скажи пожалуста а как тут быть с синтексисом если я хочу чтобы промежуток дат задавался при помощи ввода с полей Edit1 и Edit2 надо в Query в Tparams добавлять :Day1 :Day2 :Month1 :Month2 Поясни плиз что есть что в запросе ![]() |
Автор: Berliner 20.8.2005, 14:55 |
Извините если я задолбал. Мне сильно надо закончить эту программу ![]() |
Автор: Berliner 20.8.2005, 15:08 | ||
пытаюсь.... Вот так не работает ![]()
|
Автор: offline 20.8.2005, 21:28 |
очень просто есть ракая функция как DecodeDate(Date,Year,Month,Day) разбивает дату Date на год - Year, месяц - Month и день - Day вот и все DecodeDate(StrToDate(Edit1.Text),Year1,Month1,Day1); DecodeDate(StrToDate(Edit2.Text),Year2,Month2,Day2); |
Автор: Berliner 20.8.2005, 22:53 | ||
Спасибо только прежде всего у меня SQL запрос не работает
Если что то не правильно как надо? |
Автор: offline 20.8.2005, 23:09 |
тач что, в Парадоксе есть Str()? |
Автор: Berliner 20.8.2005, 23:14 |
Напиши подробнее как надо и что я неправильно делаю |
Автор: offline 20.8.2005, 23:19 | ||||
ну есле там есть Str() то попробуй так
|
Автор: Berliner 20.8.2005, 23:20 |
Вот кто0нить логику полностью раскрыл и написал что я неправильно делаю И как надо плиз а если можно то вместе с кодом и пояснити пожалуста что куда ставить пожалуста |
Автор: offline 20.8.2005, 23:22 |
Дай базу на мыло |
Автор: Berliner 21.8.2005, 00:20 |
спаиб мыло напиши а ио форумойскими примочками я плохо пользуюсь я тебе со своего мэйла вышлю |
Автор: offline 21.8.2005, 12:26 | ||
|
Автор: Guest 21.8.2005, 12:34 |
мне надо в текстовое поле чтобы ввести период с и по а в этом запросе без ПЕРИОДА надо два текстовых попя( с и по) |
Автор: Guest 21.8.2005, 12:35 |
тут типа between нужен |
Автор: Berliner 21.8.2005, 12:49 |
два предыдущих поста были мои |
Автор: offline 21.8.2005, 13:22 | ||||
через две минуты все будет ![]() Добавлено @ 13:28 Из справки Paradox
Это опробованно на твоей базе 100% гарантия ![]() |
Автор: Berliner 21.8.2005, 13:39 |
![]() ![]() ![]() ![]() ![]() Спасиб что помог!!!!! |
Автор: offline 21.8.2005, 13:41 |
![]() |