Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

dataset не фильтрует время [D7]


ixen ©   (2013-02-21 06:38:00) 

Подскажите почему фильтрация поля типа Time не срабатывает?

procedure TFjournal.daterSelectionChanged(Sender: TObject; const AStart, AFinish: TDateTime);
var ini:TIniFile;
   e,s,d:string;
begin
  FillJournal(dater.date);
  ini:=Tinifile.Create(Fmain.app_path+'settings.ini');
  s:=QuotedStr(TimeToStr(ini.ReadTime('Work_time','s_time',StrToTime('8:00:00')))) ;
  d:=QuotedStr(TimeToStr(ini.ReadTime('Work_time','do_time',StrToTime('17:00:00')) ));
  ini.Free;
  e:='zdate='+quotedstr(datetostr(dater.date))+' and (start_time>='+s+') and (start_time<='+d+')';
  Fmain.journal_dset.Filter:=e;
  Fmain.journal_dset.Filtered:=True;
end;


текст фильтра получается таким:
(zdate='21.02.2013') and (start_time>='8:00:00') and (start_time<='18:00:00')

Причем если условия по времени убрать.. по дате фильтруется нормально, а со временем таблица пустая. Что делаю не так?

P.S. использую FibDataset


Anatoly Podgoretsky   (2013-02-27 19:59:00) [1]

> Кщд  (24.02.2013 21:00:15)  [15]

Не тоычто не время, оно вообще не время, а строка


Кщд   (2013-02-25 09:46:00) [2]

>sniknik ©   (25.02.13 00:16) [16]
>после решения? о котором сообщил автор. смешно.

нет, после того, как в "ixen   (21.02.13 07:50) [1]" он сообщил: "приходится в рантайме менять selectsql у датасета", чего не произойдёт, если использовать параметры именно так, как предложил я.
дальнейший диалог мне не интересен. Ваше желание остаться правым - также понятно.


sniknik   (2013-02-25 00:16:00) [3]

> это объяснило, почему предложил использовать параметры
после решения? о котором сообщил автор. смешно.


Кщд   (2013-02-24 21:00:00) [4]

>sniknik ©   (24.02.13 20:49) [14]
>и что? это объяснило почему фильтр не работает?
это объяснило, почему предложил использовать параметры
почему не работает фильтр, очевидно из первого поста: строка != время


sniknik   (2013-02-24 20:49:00) [5]

> перечитайте "ixen   (21.02.13 07:50) [1]"
и что? это объяснило почему фильтр не работает?


Кщд   (2013-02-24 18:40:00) [6]

>sniknik ©   (23.02.13 00:02) [12]
>за "надом", блин, не тупи, а?
чего и Вам желаю)
перечитайте "ixen   (21.02.13 07:50) [1]"


sniknik   (2013-02-23 00:02:00) [7]

> зачем 24?
за "надом", блин, не тупи, а?

запрос это запрос, фильтр результата, это фильтр результата, если делать все на запросах вместо фильтров, это значит увеличить их количество на количество необходимых фильтраций. нужно будет сутки на минуты разложить будет (по твоему) 24*60 запросов.

> where (его_предикат_если_он_вообще_есть:)) and (start_time > :t or :t is null) and (start_time < :t2 or :t2 is null)
еще раз
у него фильтр, а не запрос.
where и параметры в фильтрах не поддерживаются (обычно... или в фибах сделали?).


Кщд   (2013-02-22 18:41:00) [8]

>переводить на запросы это делать их 24 вместо 1. это как я понял.
зачем 24?
where (его_предикат_если_он_вообще_есть:)) and (start_time > :t or :t is null) and (start_time < :t2 or :t2 is null)


sniknik   (2013-02-22 08:04:00) [9]

> используйте параметры уже
у него фильтр, а не запрос.
т.е. грубо, запросом получаем данные за день, после эти данные бьем по часам фильтром. переводить на запросы это делать их 24 вместо 1. это как я понял.


Кщд   (2013-02-22 05:51:00) [10]

>ixen   (21.02.13 16:00) [7]
используйте параметры уже и не переводите наше время в строки


sniknik   (2013-02-21 16:50:00) [11]

не знаю как в "фибах", а в ado фильтр дат обрамляется в ##, т.е. отлично от строки. правда там нет "чистого времени", но ... короче разница должна быть.


ixen   (2013-02-21 16:00:00) [12]


> или тип поля в базе не строка,

тип поля TIME, СУБД Firebird 2.5 , Dialect 3


sniknik   (2013-02-21 10:23:00) [13]

> тоже самое
значит нет подходящих и под такое условие. или тип поля в базе не строка, несмотря на то как ты сравниваешь (автоприведение типа может сделать что угодно, хоть адрес строки выдать).


ixen   (2013-02-21 08:45:00) [14]


> делай тогда уж так  (start_time>='08:00:00') and (start_time<='18:
> 00:00') раз строки сравниваешь.

делал .. тоже самое


Anatoly Podgoretsky   (2013-02-21 08:38:00) [15]

> Ega23  (21.02.2013 08:15:02)  [2]

В нем дело 8-00  > 10-00


sniknik   (2013-02-21 08:23:00) [16]

>  (start_time>='8:00:00') and (start_time<='18:00:00')
8 больше 1, условие не выполнимо. делай тогда уж так  (start_time>=' 08:00:00') and (start_time<='18:00:00') раз строки сравниваешь.


Ega23   (2013-02-21 08:15:00) [17]


>  Что делаю не так?

Скорее всего в формате проблема.


ixen   (2013-02-21 07:50:00) [18]

Вопрос снимается... сделал через условия запроса, приходится в рантайме менять selectsql у датасета


Наверх

Титульная страница Поиск, карта сайта Написать письмо