Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для jktxrf
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 22

Фильтрация по полю типа boolean

06.01.2011, 10:46. Показов 3765. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте)Всех с Новым годом!!!
Опять новые вопросы...делаю Библиотеку
У меня есть столбец наличие(Есть книга,нет книги) который типа Boolean
Так вот, как сделать по такому столбцу Фильтрацию???
Кто может помогите...пожалуйста
Делала так,не выходит, выдает ошибку
Delphi
1
2
if RadioButton4.Checked=true then
dataModule5.Table1.Filter:='Nalich='+edit7.text;
Ошибка такая: 'Table1:Field 'E' not faund'
Когда фильтрую по году все нормально а вот по этому столбцу и по области знания тоже косяк точно такая же ошибка
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2011, 10:46
Ответы с готовыми решениями:

Фильтрация по полю типа boolean: работает только "ложь"
Вообщем странная ситуация: Клиент-серверная программа, на клиентской части есть датасет, делаю по нему фильтрацию: ...

Фильтрация таблицы по полю типа дата
Всем добрый день. Мне нужно отфильтровать таблицу по полю типа дата. Использую такую конструкцию: ADOQuery1.Filtered := False; ...

Фильтр по полю Boolean
Как задать фильтрацию по полю Boolean. Для String нашел - работает. begin Accept:= ...

8
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
06.01.2011, 12:23
1. ВОТ ТАК
Цитата Сообщение от jktxrf Посмотреть сообщение
if RadioButton4.Checked=true then
писать можно, но не нужно. Достаточно
Delphi
1
if RadioButton4.Checked then
2. Для фильтрации Вы используете.
Цитата Сообщение от jktxrf Посмотреть сообщение
dataModule5.Table1.Filter
Не буду вдаваться в анализ, где у ВАс ошибка, но посоветую не использовать свойство Filter. Намного удобнее и гибче использовать свойство Filtered в сочетании с событием OnFilterRecord.
1
 Аватар для sanya0107
126 / 126 / 24
Регистрация: 14.02.2010
Сообщений: 289
06.01.2011, 13:39
Как написано в вашей задаче эти поля являются Boolean типа (True и False), то вы должны в edite указать одно из этих возможных значений (True или False)!!
0
 Аватар для jktxrf
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 22
06.01.2011, 19:39  [ТС]
sanya0107, вы думаете я так не пробовала???Все равно не выходит!!!

Добавлено через 1 минуту
SAMZ, а вы не подскажете где можно почитать про это

Добавлено через 34 минуты
не знаю что делаю опять не так но все равно не выходит именно с этим полем(
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
06.01.2011, 19:56
Цитата Сообщение от jktxrf Посмотреть сообщение
не знаю что делаю опять не так но все равно не выходит именно с этим полем(
А вы примеры приводите: как доработали код, что получилось, где не получается.
Вам же не сочуствие нужно, а совет. А без кода тут никак.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
06.01.2011, 20:05
Цитата Сообщение от jktxrf Посмотреть сообщение
а вы не подскажете где можно почитать про это
Да в хелпах все это прекрасным образом разжевано.
Если угодно, поясню на примере.
Пусть у Вас есть некоторый набор данных с именем SomeDataSet. Это может быть экземпляр класса TTable или TQuery с селесктивным SQL, неважно. Для этого объекта Вы должны создать обработчик для события OnFilterRecord. Для этого встаете на объект SomeDataSet, в инспекторе объектов выбираете вкладку Events и дважды щелкает мышью по событию OnFilterRecord. В результате получаете шаблн обработчика
Delphi
1
2
3
4
5
procedure TfmDtMdl.SomeDataSetFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  Accept := Pos('Иванов', DataSet.FieldByName('FIO').AsString) = 1;
end;
Здесь TfmDtMdl - квалификатор формы, на которой расположен набор данных.
В этом обработчике переменная Accept - управляет отбором записей. Если задать в программе
Delphi
1
SomeDataSet.Filtered := true;
при этом в набор будут включены только те записи, для которых Accept = true;
В приведенном примере предполагается, что в наборе есть поле с именем FIO и в набор будут включены записи, для которых FIO начинается с 'Иванов'
если задать
Delphi
1
SomeDataSet.Filtered := false;
то фильтрация отключается.
0
 Аватар для jktxrf
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 22
07.01.2011, 07:34  [ТС]
Для текстового поля у меня тоже все прекрасно работает и это я понимаю. Я не могу понять почему не работает для поля типа boolean.
Делала примерно так как вы написали
Delphi
1
2
3
4
5
procedure TDataModule5.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
 Accept := DataSet['Nalich'] = 'true';
end;
ну и включаю Filtered по нажатию кнопки фильтровать
Подобную запись нашла в интернете только вместо Nalich было FIO а вместо 'true' -Иванов
где моя ошибка???сейчас попробую сделать как написали вы

Добавлено через 13 минут
Новая ошибка: Ошибка такая: 'Table1:Field 'АND' not faund'
Делаю следующее уже пытаюсь сделать тоже самое для поле MEMO:
Delphi
1
2
3
4
5
6
procedure TDataModule5.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
 if  Form2.RadioButton4.Checked  then
  Accept := Pos('Художественная литер', DataSet.FieldByName('Oblast').AsString) = 1;
end;
По нажатию кнопки Фильтрации выполняю след
Delphi
1
dataModule5.Table1.Filtered:=true;
Где же ошибка???
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
07.01.2011, 08:12
Цитата Сообщение от jktxrf Посмотреть сообщение
Delphi
1
2
3
4
5
procedure TDataModule5.Table1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
 Accept := DataSet['Nalich'] = 'true';
end;
ну и включаю Filtered по нажатию кнопки фильтровать
Подобную запись нашла в интернете только вместо Nalich было FIO а вместо 'true' -Иванов
где моя ошибка???
Ваша ошибка в слепом копировании найденного примера без адоптации.
Boolean - это логический, а не строковый тип, поэтому незачем из Boolean-значения True делать строковый литерал 'True' - это совершенно разные вещи.
Итак, ваш пример трансформируется сначала в:
Delphi
1
Accept := DataSet['Nalich'] = true;
а потом и вовсе усекается до короткой записи логических выражений:
Delphi
1
Accept := DataSet['Nalich']
Цитата Сообщение от jktxrf Посмотреть сообщение
Новая ошибка: Ошибка такая: 'Table1:Field 'АND' not faund'
Буквальный перевод ошибки "поле 'AND' не найдено". В засвеченном вами кода никаких 'AND' не наблюдается, поэтому подсказать тут трудно. У вас случаем хлам не остался в поле Filter?
0
 Аватар для jktxrf
0 / 0 / 0
Регистрация: 01.03.2010
Сообщений: 22
07.01.2011, 13:11  [ТС]
Если я вам скину работу вы сможете посмотреть?
Потому что у меня опускаются руки...я не знаю в чем причина отключила все остальные условия фильтрации по другим полям ошибка не выводится но и фильтрация по нужным полям не осуществляется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2011, 13:11
Помогаю со студенческими работами здесь

Фильтрация по типу BOOLEAN
У меня есть таблица. В ней есть столбик "Дата выдачи", в котором заполняются данные типа DateTime. Есть записи с заполненной датой, есть с...

Ошибка: присвоить переменной типа real выражение типа boolean
program graf; var x, y: real; begin writeln('Input x= '); readln(x); begin if (x > -4) and (x < -2) then ...

Массив типа String со значемниями типа int, boolean
Привет всем! Не могу найти ресурс с нужной инфой для решения небольшой задачки, может здесь поможете? Нужно создать массив типа String и...

Фильтрация по полю
Есть справочник "Контрагенты", где есть поля: "Фамилия" "Профессия" "Вид работ". И есть документ "Договор". Вопрос: как в...

Фильтрация по вычисляемомму полю
Добрый день! Подскажите каким образом можно произвести фильтрацию по вычисляемому полю? Есть таблица в которой следующая дата...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru