Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
8 / 8 / 1
Регистрация: 28.11.2011
Сообщений: 84

Фильтрация данных в DBGrid через SQL запрос DataSet-a

21.03.2015, 22:46. Показов 2136. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi 2009, fibplus, firebird.
Имеется DataSet c SQL-запросом:
SQL
1
2
3
4
5
6
7
8
SELECT DISTINCT
    raion.naz_rai, kvartira.KOMNAT_KV, ylica.naz_yl, kvartira.DOM_KV, kvartira.NOM_KV, kvartira.STO_KV, kvartira.SOST_KV, kvartira.MEBEL_KV, kvartira.ETAJ_KV, kvartira.J_PL, kvartira.KVARTIRA_ID
FROM
    kvartira, ylica, raion 
WHERE
    kvartira.zdano='активна' AND 
    kvartira.ylica_kv_id=ylica.ylica_id AND
    ylica.raion_yl_id=raion.raion_id
где происходит выборка данных с 3 таблиц.
На форме стоит CheckBox(chkKV) и Edit(edtFKV), обрабатываю событие:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TfmPodbor.chkKVClick(Sender: TObject);
var fn : string;
begin
  fn := '';
  if (chkKV.Checked) and (edtFKV.Text<>'') then
  begin
    fn := '(NAZ_RAI LIKE '''+edtFKV.Text+'%'')';
    DMArenda.dstpodborKV.Close;
    dmArenda.dstpodborKV.MainWhereClause := fn;
    dmArenda.dstpodborKV.Open;
  end
  else
  begin
    dmArenda.dstpodborKV.Close;
    dmArenda.dstpodborKV.MainWhereClause := fn;
    dmArenda.dstpodborKV.Open;
  end; 
end;
Ожидаемый результат фильтрации данных по названию района (naz_rai) не происходит, а вместо него множественная дублируемость данных с разными районами. Что нужно изменить, чтобы избежать этого?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2015, 22:46
Ответы с готовыми решениями:

Фильтрация по дате в IBDataSet через SQL запрос
Доброго времени суток! Возникла проблема с фильтрацией по дате. Делаю в IBDataSet, база данных InterBase. Делаю так: в datetimepicker...

Групирование данных через SQL запрос
Здрасте всем всем! лазил в поискавиках в форумах но не помагло. у меня такая проблема. нужно сгрупировать данные в таблице, программа для...

Фильтрация данных в DBGrid
Необходимо оставить в DBGride только поля (их может быть несколько) у которых атрибут KodDogovora соответствует введенному в Edit1...

1
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
22.03.2015, 00:23
Судя по всему, присвоение (MainWhereClause := fn) переписывает прежние условия объединения и в результате получаем то что получаем.
Решение:
Сделать явное объединение данных из трех таблиц, т.е. с использованием JOIN.
А подстановку условия в секцию WHERE делать без использования свойства MainWhereClause, чтобы не заменять условия, а дополнять.
Запрос примерно такой (без возможности проверить на реальных данных запрос может быть не точен):
SQL
1
2
3
4
5
6
SELECT 
  raion.naz_rai,kvartira.KOMNAT_KV,ylica.naz_yl,kvartira.DOM_KV,kvartira.NOM_KV,kvartira.STO_KV,
  kvartira.SOST_KV, kvartira.MEBEL_KV, kvartira.ETAJ_KV, kvartira.J_PL, kvartira.KVARTIRA_ID
FROM kvartira JOIN ylica ON kvartira.ylica_kv_id=ylica.ylica_id 
              JOIN raion ON ylica.raion_yl_id=raion.raion_id
WHERE kvartira.zdano='активна'
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2015, 00:23
Помогаю со студенческими работами здесь

Фильтрация данных в DbGrid
В моей проге есть поиск: выбираем в combobox поле в котором необходим поиск, в edit начинаем вводить текст, а в dbgrid находит строку с...

Фильтрация данных в DBGrid
Здравствуйте.Нуждаюсь в помощи. Имеется БД Access которая связана с Delphi при помощи ADOTable1 . Имеется код procedure...

Проверка перед вводом данных и фильтрация DBGrid
Необходимо перед добавлением каких либо данных проверить их на наличие в базе! и как отфильтровать данные в DBGrid. Допустим при вводе...

Изменение запроса в зависимости от выбранных строк в нескольких DbGrid (в SQL получить значения из нескольких DataSet)
Здравствуйте. Есть таблицы и компоненты: Tbl_authors – Таблица авторов. С ней связаны компоненты: - ADOTable_authors, -...

Установка DBGrid columns при выводе через запрос SQLquery (обычный вывод в editing DBGrid Columns все настраивается)
procedure TForm1.Button33Click(Sender: TObject); //Кнопка Все вывести begin sqlquery2.Active:=FALSE; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru