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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.11.2012, 13:09
Аватар для seelenus
seelenus seelenus вне форума
Прохожий
 
Регистрация: 14.11.2012
Адрес: Новокузнецк
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Фильтрация по логическому полю

Здравствуйте.
Есть таблица (БД Access), в которой есть поле логического типа.
Также есть запрос ADOQuery и DBGrid. Помогите написать запрос для фильтра.
Необходимо отфильтровать в DBGrid данные по этому полю. У меня такой код (N8-название столбца):
Код:
    DataModule2.ADOQuery1.Filtered:=false;
    DataModule2.ADOQuery1.Filter:='N8 =true';
    DataModule2.ADOQuery1.Filtered:=true;
но фильтр по нему убирает все строки в DBGrid, а в БД там половина имеют значение "да", половина - "нет". Если проверяю по значениям столбцов с числами или строковыми значениями, то фильтрация работает. Может дело в том, что delphi не может распознать логически тип?
Ответить с цитированием
  #2  
Старый 14.11.2012, 15:26
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от seelenus
Здравствуйте.
Есть таблица (БД Access), в которой есть поле логического типа.
Также есть запрос ADOQuery и DBGrid. Помогите написать запрос для фильтра.
Необходимо отфильтровать в DBGrid данные по этому полю. У меня такой код (N8-название столбца):
Код:
    DataModule2.ADOQuery1.Filtered:=false;
    DataModule2.ADOQuery1.Filter:='N8 =true';
    DataModule2.ADOQuery1.Filtered:=true;
но фильтр по нему убирает все строки в DBGrid, а в БД там половина имеют значение "да", половина - "нет". Если проверяю по значениям столбцов с числами или строковыми значениями, то фильтрация работает. Может дело в том, что delphi не может распознать логически тип?
И это очень странно, потому что у меня всё прекрасно фильтруется.
Смотри мой пример во вложении.
Вложения
Тип файла: 7z TestFilter.7z (290.2 Кбайт, 19 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
seelenus (15.11.2012)
  #3  
Старый 15.11.2012, 08:56
Аватар для seelenus
seelenus seelenus вне форума
Прохожий
 
Регистрация: 14.11.2012
Адрес: Новокузнецк
Сообщения: 14
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
И это очень странно, потому что у меня всё прекрасно фильтруется.
Смотри мой пример во вложении.

Спасибо. Благодаря вашему примеру я разобрался что у меня не работало в программе. Правда до сих пор не пойму почему оно не работало
В моей программе SQL-запрос в ADOQuery вида:
Код:
select id as name1,
         data as name2,
         data2 as name3
from...
Я попробовал запустить прогу, убрав оператор AS, и у меня все заработало. Кстати, в вопросе я не сказал, что в том столбце в DBGrid вместо true-false отображались случайные числа. Я порылся в таблице Access-а и нашел там настройку поля (режим конструктора - вкладка Подстановка - Тип элемента управления), поменял ее с "флажок" на "поле", и фильтр заработал, а в DBGrid-е появились true-false. Ох и намудохался я с этим access-ом
Ответить с цитированием
  #4  
Старый 15.11.2012, 10:13
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от seelenus
Правда до сих пор не пойму почему оно не работало
В моей программе SQL-запрос в ADOQuery вида:
Код:
select id as name1,
         data as name2,
         data2 as name3
from...
Я попробовал запустить прогу, убрав оператор AS, и у меня все заработало.
Действительно странно. Если запрос был такой, то как оно могло заработать если в фильтре используется поле "N8":
Цитата:
Сообщение от seelenus
У меня такой код (N8-название столбца):
Код:
.....
    DataModule2.ADOQuery1.Filter:='N8 =true';
.....
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter