12 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 39
1

фильтрация

01.12.2013, 14:47. Показов 5933. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Подскажите мне, пожалуйста, несколько вопросов по фильтрации.
База данных выполнена в Access. Для вывода данных использую ADOConnection, DataSource, ADOTable, DBGrid. Размещаю на форме Edit, в который вводится значение для фильтрации, и ComboBox, где необходимо выбрать название столбца, по которому будет производиться фильтрация.
Саму фильтрацию организую следующим образом:

Delphi
1
2
3
4
5
6
7
if ((Length(Edit1.Text) > 0)and(Length(ComboBox1.Text) > 0)) then
begin
ADOTable1.Filtered:=false;
ADOTable1.Filter:=Combobox1.Text + ' LIKE '+  #39 + Edit1.Text + '%' + #39
ADOTable1.Filtered:=true;
end
else ADOTable1.Filtered:=false;
1. Как правильно задать значения в ComboBox, если поля таблицы заданы несколькими слова (например, инвентарный номер)?
2. Как организовать фильтрацию, если в таблице используются подстановочные поля.
Заранее спасибо за любую помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2013, 14:47
Ответы с готовыми решениями:

Фильтрация
Ребята, необходимо отфильтровывать данные, работает но не на 100%. Ввожу в edit фамилии, одни...

Фильтрация БД
Здравствуйте. Сразу скажу этот проект - задание в колледже. У меня есть 3 таблицы. На формах...

Фильтрация БД
Добрый вечер! Имеется 3 радиокнопки. При выборе 1 отображаются все. при выборе 2 - те у кого...

Фильтрация
Здравствуйте. Помогите разобраться. Есть форма, на ней компонент DBGrid, связанный с таблицей, одно...

10
177 / 149 / 43
Регистрация: 14.08.2008
Сообщений: 1,290
01.12.2013, 23:03 2
1) Имена таблиц указывать в квадратных скобках [Имя таблицы]

2.а) Можно перейти с ADOTable на ADOQuery, и фильтровать через изменение текста SQL запроса
2.б) вручную фильтровать в OnFilterRecord у ADOTable
1
12 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 39
02.12.2013, 18:10  [ТС] 3
teleprog, спасибо Вам за ответ. Не могли бы Вы помочь окончательно разобраться мне с этими проблемами?
1. Если поле я выбираю из ComboBox, то что мне нужно писать в квадратных скобках? В свойстве Items для ComboBox я прописывала наименование полей таблицы.
2. Не могли бы Вы привести пример фильтрации с помощью OnFilterRecord? Поле необходимо выбирать из того жe ComboBox. И как прописывать эти подстановочные поля в ComboBox?
Надеюсь на Вашу помощь.

Добавлено через 13 секунд
teleprog, спасибо Вам за ответ. Не могли бы Вы помочь окончательно разобраться мне с этими проблемами?
1. Если поле я выбираю из ComboBox, то что мне нужно писать в квадратных скобках? В свойстве Items для ComboBox я прописывала наименование полей таблицы.
2. Не могли бы Вы привести пример фильтрации с помощью OnFilterRecord? Поле необходимо выбирать из того жe ComboBox. И как прописывать эти подстановочные поля в ComboBox?
Надеюсь на Вашу помощь.
0
177 / 149 / 43
Регистрация: 14.08.2008
Сообщений: 1,290
02.12.2013, 19:16 4
Вот пример, это не совсем то что вам нужно.
Это полнотекстовый поиск по всем полям записи.
В Edit1 пишите строку для поиска, у таблицы делаете filtered:=false; filtered:=true;
и в таблице останутся только те записи у которых хоть в одном поле есть строка из едита.

прописывать в ADOTable, метод OnFilterRecord
Delphi
1
2
3
4
5
6
7
8
9
10
procedure tblZayavkiFilterRecord(DataSet: TDataSet; var Accept: Boolean);
var i:integer;
  n:Integer;
begin
  n:=0;
  if Length(edit1.text)=0 then n:=1;
  for i:=0 to DataSet.FieldCount-1 do  //проходим по всем полям
    if Pos(Edit1.Text,DataSet.Fields[i].AsString)<>0 then Inc(n); //считаем поля с нужным текстом
  Accept := n>0;  //если есть такие поля то выводим запись
end;
1
12 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 39
02.12.2013, 20:34  [ТС] 5
А где взять DataSet? Его нужно где-то дополнительно прописывать?

Добавлено через 1 минуту
И где вообще прописывать эту процедуру? не могу разобраться?

Добавлено через 1 минуту
Разобралась)

Добавлено через 42 минуты
teleprog, а не подскажите, как сделать поиск и сортировкуб работая с подстановочными полями?
0
177 / 149 / 43
Регистрация: 14.08.2008
Сообщений: 1,290
03.12.2013, 04:38 6
Поиск через OnFilterRecord будет работать и с подстановочными полями.
А вот сортировку я незнаю как делать с подстановочными.
Разве что проверять, если пытаются сортировать подстановочные, то сортировать по ключу подстановочного.
То есть сортировка будет не по тектовому значению подстановочного поля, а по коду.
0
12 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 39
08.12.2013, 11:25  [ТС] 7
teleprog, спасибо Вам за помощь!!!
Цитата Сообщение от teleprog Посмотреть сообщение
Поиск через OnFilterRecord будет работать и с подстановочными полями.
но тогда это будет не поиск, а фильтрация? а мне нужно именно поиск.
0
177 / 149 / 43
Регистрация: 14.08.2008
Сообщений: 1,290
08.12.2013, 15:32 8
На OnFilterRecord делайте закладку на нужную запись, но не скрывайте остальные,
а потом переходите на записи по закладкам
Смотрите справку по TDataSet.Bookmark
0
12 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 39
08.12.2013, 16:12  [ТС] 9
А не могли бы Вы привести пример? Не могу разобраться
0
177 / 149 / 43
Регистрация: 14.08.2008
Сообщений: 1,290
08.12.2013, 16:50 10
Создайте отдельную тему, может кто-то и поможет.
У меня времени нет
0
12 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 39
08.12.2013, 17:28  [ТС] 11
teleprog, спасибо за помощь! Извините за потраченное время.
0
08.12.2013, 17:28
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2013, 17:28
Помогаю со студенческими работами здесь

Фильтрация в БД
Добрый вечер!.

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

Фильтрация!!!
Здравствуйте))) Обращаюсь к Вам с вопросом, хочу сделать фильтрацию по специальности, специальность...

Фильтрация
При запуске и попытке Фильтрации записей таблицы по фамилии возникает ошибка &quot;project project1.exe...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Почему при инициализации массива 3х3х3 будет создано 13 одномерных массивов?
Alexander-7 16.01.2025
При инициализации многомерного массива, в данном случае трехмерного массива размерностью 3x3x3, может возникнуть путаница относительно того, как структура данных организована в памяти. Общее число. . .
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru