Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по запросу (MS Access/ADO) 
:(
    Опции темы
AntonStr
Дата 5.6.2008, 05:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый. У меня программа по автоматизации учета кадров (MS Access/ADO). Нужно создать запрос на вывод всех сотрудников у которых, например в ближайшую неделю, будет день рождения. Как сделать? Пожалуйста, примером кода бы..
И еще вопрос: можно ли и как сделать напоминание (допустим за день) о дне рождения сотрудника? Буду оч благодарен за помощь хотя бы с первым вопросом. 
PM MAIL   Вверх
Zmitro
Дата 5.6.2008, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



по первому вопросу:
Код

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT DogNumb, DogDate FROM DD WHERE (DogDate Between :start And :end);');
ADOQuery1.Parameters.ParamByName('start').Value := DateToStr(Date);
ADOQuery1.Parameters.ParamByName('end').Value := DateToStr(Date+7);
ADOQuery1.Open;

только поля поставь свои

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

Это сообщение отредактировал(а) Zmitro - 5.6.2008, 08:29
PM MAIL   Вверх
Savek
Дата 5.6.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Zmitro @  5.6.2008,  08:23 Найти цитируемый пост)
.Value := DateToStr(Date);

Зачем так измываться над датой?
PM MAIL   Вверх
Zmitro
Дата 5.6.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Savek @ 5.6.2008,  09:02)
Цитата(Zmitro @  5.6.2008,  08:23 Найти цитируемый пост)
.Value := DateToStr(Date);

Зачем так измываться над датой?

где-то была готовая база и пришлось подстраиваться под нее  :(
PM MAIL   Вверх
AntonStr
Дата 5.6.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Zmitro @ 5.6.2008,  08:23)
по первому вопросу:
Код

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT DogNumb, DogDate FROM DD WHERE (DogDate Between :start And :end);');
ADOQuery1.Parameters.ParamByName('start').Value := DateToStr(Date);
ADOQuery1.Parameters.ParamByName('end').Value := DateToStr(Date+7);
ADOQuery1.Open;

только поля поставь свои

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

Спасибо, с первым вопросом разобрался. 
А можно поподробнее с напоминалкой? Как ее на таймер повесить? Чтобы выплывало напоминание за 48 часов, например, до дня рождения.
PM MAIL   Вверх
Данкинг
Дата 5.6.2008, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(AntonStr @  5.6.2008,  19:41 Найти цитируемый пост)
Как ее на таймер повесить? 

Задать интервал таймеру 1000, чтобы проверял каждую секунду. smile Плюс запускать процедуру проверки при запуске самой программы.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
AntonStr
Дата 5.6.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Данкинг @ 5.6.2008,  20:12)
Цитата(AntonStr @  5.6.2008,  19:41 Найти цитируемый пост)
Как ее на таймер повесить? 

Задать интервал таймеру 1000, чтобы проверял каждую секунду. smile Плюс запускать процедуру проверки при запуске самой программы.

Приведите, пожалуйста, пример с кодом
PM MAIL   Вверх
Данкинг
Дата 5.6.2008, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(AntonStr @  5.6.2008,  21:54 Найти цитируемый пост)
Приведите, пожалуйста, пример с кодом 

Я алгоритм могу привести: запросом выбираешь данные из БД, в которых разница с текущей датой равна двум суткам. Ну и выводишь строки туда, куда тебе нужно, при наличии таковых.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
AntonStr
Дата 6.6.2008, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Zmitro @ 5.6.2008,  08:23)
по первому вопросу:
Код

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT DogNumb, DogDate FROM DD WHERE (DogDate Between :start And :end);');
ADOQuery1.Parameters.ParamByName('start').Value := DateToStr(Date);
ADOQuery1.Parameters.ParamByName('end').Value := DateToStr(Date+7);
ADOQuery1.Open;

только поля поставь свои

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

Вопрос: этот запрос работает только для текущего 2008 года. Как сделать для любого года рождения?
PM MAIL   Вверх
Данкинг
Дата 6.6.2008, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(AntonStr @  6.6.2008,  02:32 Найти цитируемый пост)
Как сделать для любого года рождения? 

В параметрах вместо DATE (текущая дата) подставлять дату нужную.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
AntonStr
Дата 6.6.2008, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Данкинг @ 6.6.2008,  01:53)
Цитата(AntonStr @  6.6.2008,  02:32 Найти цитируемый пост)
Как сделать для любого года рождения? 

В параметрах вместо DATE (текущая дата) подставлять дату нужную.

Подставляю, например, "05.05.1960"  и ошибка - Record, object or class type required
PM MAIL   Вверх
Savek
Дата 6.6.2008, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Данкинг @  6.6.2008,  01:53 Найти цитируемый пост)
В параметрах вместо DATE (текущая дата) подставлять дату нужную.

Как ты себе это представляешь? День рождения есть у каждого хотя бы раз в году, независимо от даты рождения smile 
PM MAIL   Вверх
Zmitro
Дата 6.6.2008, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



только за месяц: WHERE LIKE "??.06.????"
PM MAIL   Вверх
Atiskara
Дата 24.6.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Кто мне поможет? У меня стоит схожая задача, как у автора данной темы.

Вот код:
Код


    ind:=DataModule6.ADOQuery1.Fields[0].AsInteger;

    DataModule6.ADOQuery2.Close;
    DataModule6.ADOQuery2.SQL.Clear;
    DataModule6.ADOQuery2.SQL.Add('SELECT Patients.LastName, Echo.*, Conditions.Condition ');
    DataModule6.ADOQuery2.SQL.Add('FROM Patients, Echo, Conditions');
    DataModule6.ADOQuery2.SQL.Add('WHERE (Echo.PatientID=Patients.PatientID)  and  (Echo.ConditionID=Conditions.ConditionID) and (Echo.PatienttID=:ind1);');
    DataModule6.ADOQuery2.Parameters.ParamByName('ind1').Value:=integer(ind);
    DataModule6.ADOQuery2.Open;


Что при этом означает ошибка "Отсутствует значение для одного или нескольких требуемых параметров"? И как с ней бороться?
PM MAIL   Вверх
Atiskara
Дата 24.6.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



млина, нашла ошибку... неправильно написала имя поля  smile 

Код

Echo.PatienttID=:ind1

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0985 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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