Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder и базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.65
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
#1

Фильтрация и поиск в DbGrid - C++ Builder БД

11.06.2010, 22:28. Просмотров 6648. Ответов 37
Метки нет (Все метки)

делаю поиск через edit
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void __fastcall TForm4::Edit9KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
    Form4->ADOQuery1->Close();
//---ТВОЯ КВАРТИРА-----------------------------------------------------------
    if (Form4->Caption=="Твоя квартира")
    {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM kvartira WHERE Agent = '"+ Edit9->Text +"'";
    }
//---ЗОЛОТО------------------------------------------------------------------
        if (Form4->Caption=="Золото")
            {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM zoloto WHERE Agent = '"+ Edit9->Text +"'";
            }
//---СПРИНТ------------------------------------------------------------------
        if (Form4->Caption=="Спринт")
            {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM sprint WHERE Agent = '"+ Edit9->Text +"'";
            }
//---АВТОРАЙ----------------------------------------------------------------
        if (Form4->Caption=="Авторай")
            {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM avto WHERE Agent = '"+ Edit9->Text +"'";
            }
//---ТЕХНОРАЙ----------------------------------------------------------------
        if (Form4->Caption=="Технорай")
            {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM tehno WHERE Agent = '"+ Edit9->Text +"'";
            }
//---БЛЕК ДЖЕК---------------------------------------------------------------
        if (Form4->Caption=="БлекДжек")
            {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM black WHERE Agent = '"+ Edit9->Text +"'";
            }
//---КУБИКИ------------------------------------------------------------------
        if (Form4->Caption=="Кубики")
            {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM kubiki WHERE Agent = '"+ Edit9->Text +"'";
            }
//---БОЧОНКИ-----------------------------------------------------------------
        if (Form4->Caption=="Бочонки")
            {
        Form4->ADOQuery1->SQL->Text = "SELECT * FROM bochenki WHERE Agent = '"+ Edit9->Text +"'";
            }
    Form4->ADOQuery1->ExecSQL();
    Form4->ADOQuery1->Open();
 
}
выкидывает ошибку... помогите разобраться... Несоответствие типа данных в выражении условия отбора

Добавлено через 5 часов 18 минут
Люди - ну подскажите хоть варианты проблемы... срочно надо( Диплом горит
http://www.cyberforum.ru/cpp-builder-database/thread1066281.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2010, 22:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Фильтрация и поиск в DbGrid (C++ Builder БД):

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

Фильтрация и итог в DBGrid
Добрый вечер! Такая проблема, необходимо, чтобы при каждом нажатии кнопки...

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

Фильтрация в DBgrid по полю TDBEdit
Здраствуйте. Столкнулся с такой проблемой: (я использую СУБД "FireBird" 2/0)...

Синхронизация столбца в DBGrid и ComboBox и фильтрация таблицы
Подскажите пожалуйста, есть таблица, в ней столбец "Категория" (1) и есть...

37
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
11.06.2010, 22:57 #2
У бери вот это вообще
C++
1
Form4->ADOQuery1->ExecSQL();
0
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
11.06.2010, 23:00  [ТС] #3
Убрал... но ошибка до сих пор вылазит
0
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
11.06.2010, 23:30 #4
По пробуй переделать по моему примеру
C++
1
2
3
4
   MainForm->ADOQuery1->Close();
    MainForm->ADOQuery1->SQL->Clear();
    MainForm->ADOQuery1->SQL->Add("Select * from Glavnaya WHERE Invent_Number LIKE '"+Edit1->Text+"%' ORDER BY Invent_Number");
    MainForm->ADOQuery1->Open();
0
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
11.06.2010, 23:35  [ТС] #5
ругается на MainForm
0
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
11.06.2010, 23:41 #6
Ну так првильно и ругается вместо MainForm, напиши Form4
0
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
11.06.2010, 23:45  [ТС] #7
изменил... ошибка на месте
Несоответствие типа данных в выражении условия отбора
0
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
12.06.2010, 00:51 #8
Какие типы полей у тебя в Базе
0
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
12.06.2010, 00:54  [ТС] #9
числовые... "номера агентов"
0
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
12.06.2010, 00:58 #10
А ну так понятно, сделай так
StrToInt(Edit1->Text)
0
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
12.06.2010, 02:01  [ТС] #11
Project Project1.exe raised exception class EConverError with message "SELECT * FROM kvartira WHERE Agent = '1" is not a value'.
вот что выдало(

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
void __fastcall TForm4::Edit9KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
        Form4->ADOQuery1->Close();
        Form4->ADOQuery1->SQL->Text = StrToInt"SELECT * FROM kvartira WHERE Agent = '"+ Edit9->Text +"'";
        Form4->ADOQuery1->ExecSQL();
        Form4->ADOQuery1->Open();
}
0
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
12.06.2010, 03:13 #12
Пробуй так

C++
1
2
3
4
5
6
7
8
void __fastcall TForm4::Edit9KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
Form4->ADOQuery1->Close();
Form4->ADOQuery1->SQL->Clear();
Form4->ADOQuery1->SQL->Text = "SELECT * FROM kvartira WHERE Agent = '"+ StrToInt(Edit9->Text) +"'";
Form4->ADOQuery1->Open();
}
1
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
12.06.2010, 03:20  [ТС] #13
так вообще компилиться не хочет
Invalid pointer addition
что то на + помойму ругается
0
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
12.06.2010, 03:43 #14
С кинь мне в личку проект я погляжу что там у тебя
1
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
12.06.2010, 03:47  [ТС] #15
а как тут файлы прицеплять?)
0
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,802
Завершенные тесты: 1
12.06.2010, 15:23 #16
зачем текст конвертировать в число и пытаться сделать его конкатенацию со строкой, вот и ругается...
C++
1
2
3
4
Form4->ADOQuery1->Close();
Form4->ADOQuery1->SQL->Clear();
Form4->ADOQuery1->SQL->Text = "SELECT * FROM kvartira WHERE Agent = '"+ Edit9->Text +"'";
Form4->ADOQuery1->Open();
1
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
13.06.2010, 23:26 #17
Lord_Voodoo, человек вверху написал что у него проблемы всё равно с этим были
1
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,802
Завершенные тесты: 1
14.06.2010, 09:58 #18
значит кавычки не нужны
C++
1
Form4->ADOQuery1->SQL->Text = "SELECT * FROM kvartira WHERE Agent = "+ Edit9->Text;
1
Sidi
1 / 1 / 1
Регистрация: 31.03.2010
Сообщений: 70
14.06.2010, 22:52  [ТС] #19
Спасибо большое за помощь! Выручили!!! Причем оба))))

Добавлено через 17 минут
хотя один глюк остался...
после заполнения записи (любым значением) - его нельзя очистить (ошибка:"Ошибка синтаксиса (Пропущен оператор) в выражении запроса 'Agent =")

Добавлено через 26 минут
C++
1
2
3
4
5
6
7
8
void __fastcall TForm4::Edit9KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
    Form4->ADOQuery1->Close();
    Form4->ADOQuery1->SQL->Clear();
    Form4->ADOQuery1->SQL->Text = "SELECT * FROM kvartira WHERE Agent = "+ Edit9->Text;
    Form4->ADOQuery1->Open();
}
Добавлено через 7 часов 16 минут
Все - я разобрался)) может кому понадобится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (Edit9->Text!="") {
 
 
    Form4->ADOQuery1->Close();
    Form4->ADOQuery1->SQL->Clear();
    Form4->ADOQuery1->SQL->Add("SELECT * FROM kvartira WHERE Agent=:t");
    Form4->ADOQuery1->Parameters->ParamByName("t")->Value=StrToInt(Edit9->Text);
    Form4->ADOQuery1->Open();
  }
  else  {
   Form4->ADOQuery1->Close();
    Form4->ADOQuery1->SQL->Clear();
    Form4->ADOQuery1->SQL->Add("SELECT * FROM kvartira");
    Form4->ADOQuery1->Open();
     }
1
andrew_
13 / 13 / 2
Регистрация: 04.06.2010
Сообщений: 24
18.06.2010, 09:35 #20
а что у тебя за перемення t ?
скажи плз, а то сижу мучаюсь с этими запросами =)
0
18.06.2010, 09:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2010, 09:35
Привет! Вот еще темы с решениями:

DBGrid: фильтрация по дате с учетом только дня и месяца
Таблица БД Paradox содержит поле "Birthday" (дата рождения в формате...

ADOTable БД Access фильтрация поиск
Тема тривиальна, но все же Вообщем есть таблица: дата продаж, наименование...

Общий поиск или массовая фильтрация
Добрый день, возник вопрос: как задать массовый фильтр по всем полям таблицы?...

Поиск и фильтрация данных в БД Access через C++ Builder
Помогите пожалуйста. Нужно реализовать поиск и фильтрацию данных в C++ Builder...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru