Фильтр по пустому полю data

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Фильтр по пустому полю data

Сообщение alanpa » 12.06.2011 18:11:25

Есть поле dataprint - дата открытия магазина - (ftdata).
Как создать фильтр по дате вообще - получается, например, так:
Код: Выделить всё
   dbnalog.Filter:='DTOS(dataprint)>"20110101"'
   dbnalog.Filtered:=true;


А как отфильтровать записи, у которых это поле пустое? (нужен список магазинов, у которых дата открытия не определена.

lazarus v0.9.31
win7, ubuntu
alanpa
незнакомец
 
Сообщения: 4
Зарегистрирован: 12.06.2011 17:42:01

Re: Фильтр по пустому полю data

Сообщение Ism » 12.06.2011 18:48:22

Может

Код: Выделить всё
dbnalog.Filter:='DTOS(dataprint) is null '


Что за функция DTOS ? Какая база данных ? Разрешены ли null значения в поле ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Фильтр по пустому полю data

Сообщение alanpa » 12.06.2011 19:23:27

DTOS(data) преобразует дату в строку вида yyyymmdd
База dbf
null не запрещены
Так:
Код: Выделить всё
dbnalog.Filter:=('dataprint is null');   

и так
Код: Выделить всё
dbnalog.Filter:=(DTOS('dataprint) is null');   

не получилось.
alanpa
незнакомец
 
Сообщения: 4
Зарегистрирован: 12.06.2011 17:42:01

Re: Фильтр по пустому полю data

Сообщение Ism » 12.06.2011 19:26:55

значит осталось
dbnalog.Filter:='DTOS(dataprint) = "" '

Нужно выяснить какое значение возвращает DTOS в случае пустого поля. И вообще, что это за функция ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Фильтр по пустому полю data

Сообщение Vadim » 12.06.2011 19:30:38

Ism писал(а):И вообще, что это за функция ?

Те, кто работал с dBase и FoxPro в конце прошлого века, её прекрасно помнят. Для более молодого поколения - заморачиваться не стоит, т.к. это уже дикий анахронизм, что-то вроде как ездить по горам на деревянном амокате, вместо горного байка. :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Фильтр по пустому полю data

Сообщение Ism » 12.06.2011 19:33:30

Возможно DTOS(dataprint) вообще не работает, так как компонент связан с dbf напрямую. Хотя по идее должно выдавать ошибку.
Через какой компонент подключена база данных ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Фильтр по пустому полю data

Сообщение Vadim » 12.06.2011 19:45:19

Ism писал(а):Через какой компонент подключена база данных ?

99% - через TDBF. Никаких других компонент для работы с dbf-файлами в Lazarus нет.
Ism писал(а):Возможно DTOS(dataprint) вообще не работает

Работает, если судить по сообщению:
alanpa писал(а):Как создать фильтр по дате вообще - получается, например, так:
Код: Выделить всё
dbnalog.Filter:='DTOS(dataprint)>"20110101"'
dbnalog.Filtered:=true;


Можно попробовать вообще без DTOS():
Код: Выделить всё
dbnalog.Filter:='dataprint>""'
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Фильтр по пустому полю data

Сообщение alanpa » 12.06.2011 20:08:35

Выпутался пока так:
Код: Выделить всё
if toolbutton4.down then
         dbnalog.Filter:='DTOS(dataprint)>"20110101"'
  else begin
          dbnalog.Filter:=('DTOS(dataprint)<"00010101"'); // <- магазин не имеет даты создания, если создан ранее первого года
  end; 

Те, кто работал с dBase и FoxPro в конце прошлого века, её прекрасно помнят. Для более молодого поколения - заморачиваться не стоит, т.к. это уже дикий анахронизм, что-то вроде как ездить по горам на деревянном амокате, вместо горного байка.

Подскажите, а куда смотреть, что бы тоже на байке?
alanpa
незнакомец
 
Сообщения: 4
Зарегистрирован: 12.06.2011 17:42:01

Re: Фильтр по пустому полю data

Сообщение Mr.Smart » 12.06.2011 20:14:32

alanpa писал(а):Подскажите, а куда смотреть, что бы тоже на байке?

Смотрите в сторону любого SQL сервера. Если не требуется клиент-серверное решение, посмотрите в сторону SQLite3.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43

Рейтинг@Mail.ru