Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 14:44   #1
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию Ошибка в запросе с датой

здравствуйте!
такое дело:
Код:
SELECT Сотрудники.Табельный_номер, Сотрудники.Фамилия, Сотрудники.[Дата рождения]
FROM Сотрудники
WHERE ( Сотрудники.[Дата рождения] Between Format("01.03","dd/mm/yyyy") And Format("30.03","dd/mm/yyyy"))
в итоге он выбирает запись, где дата 24/06/2009 - т.е. вообще 6 месяц...
в чем дело? и как переделать запрос для выбора даты по месяцам?
pobedin вне форума
Старый 17.06.2010, 05:33   #2
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Во первых есть вот такая функция.
FormatDateTime(const Format: string; DateTime: TDateTime): string;

Во вторых что за СУБД?
И наверно на стороне сервера необходимо преобразовать строку с датой в датую
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)

Последний раз редактировалось rdama; 17.06.2010 в 05:44.
rdama вне форума
Старый 17.06.2010, 06:54   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
в чем дело? и как переделать запрос для выбора даты по месяцам?
я уже устал повторять одно и то же..
Поищите на форуме - ПАРАМЕТРИЧЕСКИЙ запрос легко решает подобные проблемы!

Код:
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('Select * from ... ');
AdoQuery1.SQL.Add('where .... Сотрудники.[Дата рождения] between :pDate1 and :PDate2 ');
ADOQuery1.Parameters.ParamByName('pDate1').Value := DateTimePicker1.Date;
ADOQuery1.Parameters.ParamByName('pDate2').Value := DateTimePicker2.Date;
Serge_Bliznykov вне форума
Старый 17.06.2010, 09:42   #4
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

СУБД акцесс. параметрический запрос не подойдет. мне нужно выбрать даты рождения сотрудников по месяцам.
pobedin вне форума
Старый 17.06.2010, 09:51   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от pobedin Посмотреть сообщение
СУБД акцесс. параметрический запрос не подойдет. мне нужно выбрать даты рождения сотрудников по месяцам.
А я вот полностью согласен с Serge_Bliznykov, делайте запрос с параметрами. Есть много ф-ий для работы с датой

Последний раз редактировалось SERG1980; 17.06.2010 в 09:54.
SERG1980 вне форума
Старый 17.06.2010, 09:53   #6
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Я не знаю насчет Access'a, но в SQL есть такой оператор MONTH он дергает месяц из даты.
Попробуй через него.
Если конечно Access его знает.
т.е.
Код:
WHERE MONTH(DATE) = 3
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума
Старый 17.06.2010, 10:26   #7
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
СУБД акцесс. параметрический запрос не подойдет. мне нужно выбрать даты рождения сотрудников по месяцам.
для начала попробуй построить свой запрос в самой базе, в ацессе это ведь оч легко сделать, посмотри как выглядит сам запрос и как в нём записаны даты, а потом уже перенеси запрос в программу .
Тяжело быть бестолковым.....
Dark_Spirit вне форума
Старый 17.06.2010, 10:45   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
СУБД акцесс. параметрический запрос не подойдет. мне нужно выбрать даты рождения сотрудников по месяцам.
С этого и надо было начинать.

Вам нужен запрос:
Код:
SELECT *
FROM Сотрудники where month(Сотрудники.[Дата рождения])=2;
(вместо 2-ки поставьте или параметр (зря Вы так настроены против параметрических запросов!!!)
или подставьте число, равное номеру месяца.
Serge_Bliznykov вне форума
Старый 17.06.2010, 10:57   #9
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

то, что доктор приписал.

спасибо!
pobedin вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в запросе LIKE Ele БД в Delphi 2 22.05.2010 13:07
Ошибка в SQL запросе program123 БД в Delphi 11 06.12.2009 17:12
Манипуляции с датой в запросе Arkuz БД в Delphi 8 11.11.2008 23:23
ошибка в запросе с union Tanuska___:) БД в Delphi 3 22.08.2008 22:32