Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.07.2011, 22:44
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию Как отфильтровать?

Имеется база данных в которой имеется поле SimpleTime форматом DateTime. база данных крутится на SQL Server. Данное поле хранится в следующем виде 2011-07-05 00:00:00.000. SQL запросом в менеджере фильровать нет надобности нужная дата и время отбирается следующим образом.
SELECT *
FROM Test.dbo.Data_183608_8_0_8
WHERE SimpleTime BETWEEN '20110705 13:57:09.000' AND '20110705 13:57:59.000'

Для делфи чтоб отобрать дату я написал следущие:
Код:
procedure TForm1.Button6Click(Sender: TObject);
Var Filter:String;
begin
      Filter  := 'SimpleTime>='''+DateToStr(DateTimePicker1.Date)
      +''''+' and '+'SimpleTime<='''+DateToStr(DateTimePicker2.Date)+'''' ;
  ADOQuery1.Active:=False;
  ADOQuery1.Filter := Filter;
  ADOQuery1.Filtered := true;
  ADOQuery1.Active := true;
end;
 Запрос содержашийся в ADOQuery1:
  SELECT *
  FROM Test.dbo.Data_183608_8_0_8 
Админ: Пользуемся тегами для оформления кода!

Все прекрасно работает но необходимость состоит в следующем что может понадобится отобрать данные за один день за один час. Подскажите пожалуйста что нужно дописать или переделать а то не как не получается.

Последний раз редактировалось Admin, 06.07.2011 в 11:43.
Ответить с цитированием
  #2  
Старый 05.07.2011, 23:20
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Так а не вариант вот к этому Filter := 'SimpleTime>='''+DateToStr(DateTimePicker1.Date) подписать еще вот это например +' 12:39:00.000'
там обрати внимание через пробел
Ответить с цитированием
  #3  
Старый 06.07.2011, 07:54
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

Надо чтоб как нето дата в эдите что ли вводилась пользоватилем или еще каким способом не буду же я каждый раз код переписывать чтоб отчеты снять.
Ответить с цитированием
  #4  
Старый 06.07.2011, 08:48
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

У компонента DateTimePicker есть два режима ввода: даты (dkDate) и времени (dkTime).
Разместить на форме четыре таких компонента, где по парам вводятся даты и время задаваемого периода.
Затем в запрос подставить эти значения.

Только делать это лучше не через свойства Filter, а в самом запросе. Либо параметрами, либо непосредственно подставляя значения даты и времени в текст запроса.
Ответить с цитированием
  #5  
Старый 06.07.2011, 09:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Все прекрасно работает но необходимость состоит в следующем что может понадобится отобрать данные за один день за один час. Подскажите пожалуйста что нужно дописать или переделать а то не как не получается.
Вместо DateToStr используйте функцию DateTimeToStr, тогда и время будет в выражении.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 06.07.2011, 10:47
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от Zhigalov
Надо чтоб как нето дата в эдите что ли вводилась пользоватилем или еще каким способом не буду же я каждый раз код переписывать чтоб отчеты снять.
Так понятно, что таким образом не надо вводить, это я написал так для наглядности. Просто нужно передать в запрос строковое значение времени. Как это сделать, уже варианты вам подкинули
Ответить с цитированием
  #7  
Старый 06.07.2011, 11:04
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
Печаль

Написал вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var Filter:String;
begin
      Filter  := 'SimpleTime>='''+DateTimeToStr(DateTimePicker1.DateTime)
     +''''+' and '+'SimpleTime<='''+DateTimeToStr(DateTimePicker2.DateTime)+'''' ;
       Filter  := 'SimpleTime>='''+DateTimeToStr(DateTimePicker3.DateTime)
     +''''+' and '+'SimpleTime<='''+DateTimeToStr(DateTimePicker4.DateTime)+'''' ;
  ADOQuery1.Active:=False;
  ADOQuery1.Filter := Filter;
  ADOQuery1.Filtered := true;
  ADOQuery1.Active := true;
Админ: Пользуемся тегами, иначе последуют санкции!

DateTimePicker1 06.07.2011
В DateTimePicker2 06.07.2011

В DateTimePicker3 12:56:26
В DateTimePicker4 13:00:00


Вобще не чего не выдает.

В запрос вабще не понимаю как данные закинуть с эдитов дапустим.

Последний раз редактировалось Admin, 06.07.2011 в 11:43.
Ответить с цитированием
  #8  
Старый 06.07.2011, 11:13
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Что в итоге получается в Filter? Возможно, что несоответствие представления даты/времени на сервере и клиенте.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 06.07.2011, 11:43
Zhigalov Zhigalov вне форума
Начинающий
 
Регистрация: 27.05.2009
Сообщения: 100
Репутация: -1277
По умолчанию

там получается SimpleTime>='06.07.2011 13:22:55' and SimpleTime<='06.07.2011 13:23:03'
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter