Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 06.06.2018, 14:09   #11
Rusya15937
Новичок
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 13
Репутация: 10
По умолчанию

я уже пытался сделать так, но когда осуществляется вторая фильтрация то Grid показывается пустым
Rusya15937 вне форума   Ответить с цитированием
Старый 06.06.2018, 14:16   #12
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,049
Репутация: 5228
По умолчанию

Цитата:
Сообщение от Rusya15937 Посмотреть сообщение
я уже пытался сделать так, но когда осуществляется вторая фильтрация то Grid показывается пустым
одно из двух - либо нет записей, которые попадают под все фильтры,
либо неверно написан код.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 06.06.2018, 19:19   #13
Rusya15937
Новичок
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 13
Репутация: 10
По умолчанию

там код на два button и он идентичен, может там Query open лишние?
или Close, или Clear
Rusya15937 вне форума   Ответить с цитированием
Старый 06.06.2018, 20:28   #14
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,049
Репутация: 5228
По умолчанию

Цитата:
Сообщение от Rusya15937 Посмотреть сообщение
Там код на два button и он идентичен
идентичен чему?


Цитата:
Сообщение от Rusya15937 Посмотреть сообщение
может там Query open лишние?
может. Мне отсюда не видно.


Цитата:
Сообщение от Rusya15937 Посмотреть сообщение
или Close, или Clear
а это тут при чём?!


Вы покажите свой код, расскажите, что он должен делать, тогда и поговорим более предметно.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 06.06.2018, 22:22   #15
Rusya15937
Новичок
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 13
Репутация: 10
По умолчанию

Фильтрация диапазона на Квадратуру:


Код:

void __fastcall TForm1::RzBitBtn11Click(TObject *Sender)
{
    Form1->ADOQuery1->Close();
    Form1->ADOQuery1->SQL->Clear();
    Form1->ADOQuery1->SQL->Add("Select * from Дома WHERE  Квадратура BETWEEN'"+RzEdit2->Text+"' and '"+RzEdit11->Text+"'");
    Form1->ADOQuery1->Open();
}
//---------------------------------------------------------------------------

Фильтрация диапазона на Комнаты:

Код:

void __fastcall TForm1::RzBitBtn12Click(TObject *Sender)
{
    Form1->ADOQuery1->Close();
    Form1->ADOQuery1->SQL->Clear();
    Form1->ADOQuery1->SQL->Add("Select * from Дома WHERE  Комнаты BETWEEN'"+RzEdit2->Text+"' and '"+RzEdit11->Text+"'");
    Form1->ADOQuery1->Open();
}

нужно после первой фильтрации производилась вторая, но вторая фильтрация должна выполняться по итогу первой фильтрации


_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 07.06.2018 в 08:59.
Rusya15937 вне форума   Ответить с цитированием
Старый 06.06.2018, 22:34   #16
Rusya15937
Новичок
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 13
Репутация: 10
По умолчанию

и вот выдает ошибку, видимо в апострофах запутался, но найти не могу, помогите пожалуйста

void __fastcall TForm1::RzBitBtn11Click(TObject *Sender)
{
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("Select Квадратура, Комнаты from Дома WHERE Квадратура BETWEEN'"+RzEdit2->Text+"' and '"+RzEdit11->Text+"' and WHERE Комнаты BETWEEN '"+RzEdit12->Text+"' and '"+RzEdit13->Text+"'");
Form1->ADOQuery1->Open();
}
Изображения
Тип файла: png Error.png (20.5 Кб, 1 просмотров)
Rusya15937 вне форума   Ответить с цитированием
Старый 06.06.2018, 23:00   #17
Sciv
Профессионал
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Адрес: Курган
Сообщений: 3,219
Репутация: 1205
По умолчанию

1. Пробел после BETWEEN поставьте

2. and WHERE - тут только and должен быть

3. Если Вам нужно фильтровать набор данных на форме - можно сделать так:

а) отобразить в элементе формы набор данных, полученных селектом
б) применить к этому набору фильтр, который задаётся в ADOQuery в свойстве Filter. Включается/отключается фильтр значением свойства Filtered. Синтаксис для строки фильтра - тот же SQL (та часть, которая пишется после WHERE, то есть условие отбора)
__________________
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 06.06.2018 в 23:04.
Sciv вне форума   Ответить с цитированием
Старый 08.06.2018, 09:24   #18
Rusya15937
Новичок
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 13
Репутация: 10
По умолчанию

а все, только дошло
Только не пойму что с кодом не так

Код:

Цитата:
void __fastcall TForm1::RzBitBtn12Click(TObject *Sender) { ADOQuery1->Filtered=false; ADOQuery1->Filter="Материал"+RzEdit12->Text; ADOQuery1->Filtered=true; } //---------------------------------------------------------------------------


только выдает эту ошибку
Изображения
Тип файла: png 001.png (12.1 Кб, 0 просмотров)
Rusya15937 вне форума   Ответить с цитированием
Старый 08.06.2018, 09:26   #19
Sciv
Профессионал
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Адрес: Курган
Сообщений: 3,219
Репутация: 1205
По умолчанию

Цитата:
Сообщение от Rusya15937 Посмотреть сообщение
а все, только дошло
Только не пойму что с кодом не так
Вы знак "равно" не поставили

Код:

"Материал="+RzEdit12->Text;

либо так, если у Вас поле в БД строковое

Код:

"Материал="+QuotedStr(RzEdit12->Text);

__________________
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума   Ответить с цитированием
Старый 11.06.2018, 11:44   #20
Rusya15937
Новичок
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 13
Репутация: 10
По умолчанию

Спасибо большое
У Вас нет кода на сортировку в С++?
чтобы по нажатию на название поля оно сортировала по алфавиту, от А до Я и на оборот, а так же по возрастанию и убыванию в числах
есть код на Delphi
Код:

Цитата:
procedure TForm2.RzDBGrid20TitleClick(Column: TColumn); Var f:string; begin if ADOQuery13.FieldByName(Column.FieldName).Tag=0then begin f := ' ASC'; ADOQuery13.FieldByName(Column.FieldName).Tag := 1; end else begin f := ' DESC'; ADOQuery13.FieldByName(Column.FieldName).Tag := 0; end; ADOQuery13.Sort:=Column.FieldName + f; end;
Rusya15937 вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Фильтрация по диапазону дат. Droz Помощь студентам 4 08.04.2016 17:54
Фильтрация в ADOQuery Janger Общие вопросы Delphi 6 13.08.2015 12:59
Фильтрация по диапазону xsaroo БД в Delphi 4 05.06.2013 06:01
Фильтрация данных по диапазону даты? sctr84 БД в Delphi 2 05.03.2012 08:55
Фильтрация по диапазону. D.O.G БД в Delphi 12 18.08.2010 10:02


15:54.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru