Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как отловить кто дату когда у человека день рожден, Paradox,BDE 
:(
    Опции темы
Berliner
Дата 18.8.2005, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Здраствуйте вот такая ситуация!
Есть таблица(Paradox "people.db")
В ней поля
Фамилия
Имя
Навыки
Дата рождения тип Date

как сделать так чтобы пользователь ввел период(2 даты) в 2 поля едит1 и едит2
задал например 1.02.2005 по 28.02.2005 и ком нашел у кого день рождения в этом месяце

подскажите самый простой вариант пожалуста

PM   Вверх
Pakshin A. S.
Дата 18.8.2005, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Код

with query1 do
 begin
  Close;
  SQL.Text:='SELECT * FROM "people.db" WHERE BirthDate BETWEEN ''' + Edit1.Text + ''' AND ''' + Edit2.Text + ''';';
  Open;
 end;

PM   Вверх
Guest
Дата 18.8.2005, 23:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо за помощь!
Опс я тоже так думал! НО.....
по этому запросу компьютер выберет людей которые родились с и по
Например с 1.08.2005 по 31.08.2005 и выберет тех людей которые родились в этот промежутое - это хорошо
но надо выбрать и поздравить сех людей которые родились в Августе! и тех кому 25, 50,21 и т.д. всех у кого день рождения в этом периоде с 1.08.2005 по 31.08.2005
  Вверх
Guest
Дата 18.8.2005, 23:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А не только те которые родились в этом месяце
А иначе с 1.08.2005 по 31.08.2005 отберет только младенцев а поздравить других людей постарше?
Спасиб за внимание
  Вверх
bursa
Дата 19.8.2005, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.2.2005
Где: Липецк

Репутация: 1
Всего: 1



В теме http://forum.vingrad.ru/index.php?showtopic=61283 уже было.
Исправь код SergeBS на CalcDay := FormatDateTime('mmdd', DateFld);
т.е. месяцы вперед.

И фильтруй Query1.Filter:='CalcDay>=+''''+'0106'+''''+ and Query1.Filter<+''''+'0107'+'''';
PM MAIL   Вверх
Pakshin A. S.
Дата 19.8.2005, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Цитата(Guest @ 19.8.2005, 00:04)
Спасибо за помощь!
Опс я тоже так думал! НО.....
по этому запросу компьютер выберет людей которые родились с и по
Например с 1.08.2005 по 31.08.2005 и выберет тех людей которые родились в этот промежутое - это хорошо
но надо выбрать и поздравить сех людей которые родились в Августе! и тех кому 25, 50,21 и т.д. всех у кого день рождения в этом периоде с 1.08.2005 по 31.08.2005


Цитата(Guest @ 19.8.2005, 00:12)
А не только те которые родились в этом месяце
А иначе с 1.08.2005 по 31.08.2005 отберет только младенцев а поздравить других людей постарше?
Спасиб за внимание

Что-то непонятно....
По-полочкам: нам нужно выбрать всех людей, у кого днюха в данном промежутке, но нам нужно всех поздравлять или только тех, кто старше какого-то возраста? Или нам нужно выбрать всех, кому "за 30" и всех, у кого днюха в данном промежутке...
PM   Вверх
Berliner
Дата 19.8.2005, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



для Pakshin Нужно:
Код


выбрать всех людей, у кого днюха в данном промежутке


вводим в одно тесковое поле дату с а в другое текстовое поле дату по, по нажатию ктопки чтобы отловило людей у кого день рождения в данном промежутке smile сильно нада- помогите пожалуста



Код

 http://forum.vingrad.ru/index.php?showtopic=61283

для bursa
Спасиб за ссылку но я мало что понял ты можешь мне поджробнее каждую строку кода пояснить(если не трудно) и где там правильный код smile
PM   Вверх
bursa
Дата 19.8.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.2.2005
Где: Липецк

Репутация: 1
Всего: 1



Создаешь вычисляемое поле CalcDay
На обработчике OnCalcField
Цитата(SergeBS @ 17.8.2005, 15:41)

procedure xxx.yyyy.OnCalcField;
begin
CalcDay := FormatDateTime('ddmm', DateFld);
end;
Где-то еще:
FilterStr := FormatDateTime('ddmm', now);


И меняешь

Цитата(bursa @ 19.8.2005, 08:33)

Исправь код SergeBS на CalcDay := FormatDateTime('mmdd', DateFld);
т.е. месяцы вперед.
И фильтруй Query1.Filter:='CalcDay>=+''''+'0106'+''''+ and Query1.Filter<+''''+'0107'+'''';


Месяцы вперед, чтобы,к примеру, 7 января было меньше 3 апреля, т.к.
'0107'<'0403'
а не наоборот
'0701'>'0304'
PM MAIL   Вверх
Pakshin A. S.
Дата 19.8.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Цитата(Berliner @ 19.8.2005, 12:10)
выбрать всех людей, у кого днюха в данном промежутке


А это что?


Цитата(Pakshin @ 18.8.2005, 16:15)
with query1 do
begin
  Close;
  SQL.Text:='SELECT * FROM "people.db" WHERE BirthDate BETWEEN ''' + Edit1.Text + ''' AND ''' + Edit2.Text + ''';';
  Open;
end;


Выбор только тех полей, где поле находтся в промежутке...
PM   Вверх
Berliner
Дата 19.8.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2




Код

with query1 do
begin
  Close;
  SQL.Text:='SELECT * FROM "people.db" WHERE BirthDate BETWEEN ''' + Edit1.Text + ''' AND ''' + Edit2.Text + ''';';
  Open;
end;



этот код выберет людей которые родились с даты введенной в текстовое поле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
а можно полный код и поподробнее(еще подробнее) как это задача решаема вместе с кодом плиз( правда еще книжку сегодня гляну) и логику( я логику решения задачи не понял) что код делает и сам код полный плиз Извините если достал
PM   Вверх
Berliner
Дата 19.8.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



P.S. Еще раз коротко для прояснения ситуации

нужно чтобы программа показала кто родился за определенный период, в период будут включаться с "число, месяц" по "число, месяц" , но год -игнорировать. Игнорировать год -сделать период с "число, месяц" по "число,месяц" а года ,чтобы все в условие входили. Т.е. вылавливать -учитывая только дату и месяц рождения
PM   Вверх
offline
Дата 19.8.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: 7
Всего: 7



не знаю как в Парадоксе, а в Аксесе это можно сделать так

Код

SELECT Таблица1.FIO, Str(Dat) AS DenRozhd FROM Таблица1
WHERE Str(Dat) Like "*.12.*"


т.е. пусть секретарь выбирает тоько месяц.
затем берешь пое даты и переводишь в строковую переменную а затем ищешь у кого месяц выбранный секрктадем, в примере декабрь (12) а затем можно уже использовать это поле как дату
АДОЗапрос....ASDate , кажись так. Но это все к Аксесу, не знаю, есть ли в ПАРАДОКСЕ ТАКАЯ ФУНКЦИЯ, НО ДУМАЮ ИДЕЯ ПОНЯТНА smile

поздно увидел твое дополнение касаемое даты. но и дату можно поставить например 23

Код

SELECT Таблица1.FIO, Str(Dat) AS DenRozhd FROM Таблица1
WHERE Str(Dat) Like "23.12.*"


Это сообщение отредактировал(а) kirilllius - 19.8.2005, 20:28
PM MAIL   Вверх
Berliner
Дата 19.8.2005, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Спасиб а может кто знает как в парадоксе сделать?

Завтра буду пробывать реализоавть идею что написал kirilllius
PM   Вверх
Pakshin A. S.
Дата 20.8.2005, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Код

SELECT * FROM Table1 WHERE (EXTRACT(Date FROM BirthDay) BETWEEN Day1 AND Day2) and (EXTRACT(Month FROM BirthDay) BETWEEN Month1 AND Month2);

ТА тот случай, если не попрет вышесказанное...
PM   Вверх
Berliner
Дата 20.8.2005, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



для Pakshin:

Скажи пожалуста а как тут быть с синтексисом если я хочу чтобы промежуток дат задавался при помощи ввода с полей Edit1 и Edit2 надо в Query в Tparams добавлять :Day1 :Day2 :Month1 :Month2
Поясни плиз что есть что в запросе smile
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.