1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

LIKE int через фильтр

31.05.2012, 22:34. Показов 4177. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Sasha , чего-то не могу допендрить каким образом использовать маску (через LIKE) на числовое поле, скажем у ADOTable через Filter.

Подскажите, пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2012, 22:34
Ответы с готовыми решениями:

Фильтр по значению столбца int
Значение вводится в Edit и при нажатии кнопки должен осуществляться поиск, с таким кодом для кнопки получаю сообщение void __fastcall...

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int Funkz(int a) int Funkz(int a, int b, int...

Исключения. Фильтр на ввод int
Помогите, пожалуйста разобраться с исключениями. Вот, к примеру, есть интовая переменная, в которую пользователь вбивает символы. Как...

34
 Аватар для zlaja_zaja
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 8
01.06.2012, 18:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Sasha Посмотреть сообщение
Сделай запросом
запросы почему то не работают
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
01.06.2012, 19:23
The_Immortal,
C++
1
2
3
4
5
6
7
8
9
void __fastcall Tpf::Edit1Change(TObject *Sender)
{  
    DBGrid1->DataSource->DataSet->Filtered=false;
    if (!Edit1->Text.IsEmpty())
     {
      DBGrid1->DataSource->DataSet->Filter = "IntegerField LIKE '"+Edit1->Text+"%'";
      DBGrid1->DataSource->DataSet->Filtered=true;
     }
}
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
01.06.2012, 19:32  [ТС]
Bit_Man, не катит так.
1
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
01.06.2012, 19:38
zlaja_zaja, почти тоже самое только на кнопке.
C++
1
2
3
4
5
6
7
8
9
DBGrid1->DataSource->DataSet->Filtered=false;
if (!Edit1->Text.IsEmpty())
  ADOTable1->Filter = "[Фамилия] LIKE '"+ Edit1->Text +"%'";
if (!Edit2->Text.IsEmpty())
 {
  if (!ADOTable1->Filter.IsEmpty()) ADOTable1->Filter = ADOTable1->Filter + " and ";  
  ADOTable1->Filter = ADOTable1->Filter + "[Имя] LIKE '"+ Edit2->Text +"%'" 
 }
if (!ADOTable1->Filter.IsEmpty()) DBGrid1->DataSource->DataSet->Filtered=true;
Добавлено через 1 минуту
Цитата Сообщение от The_Immortal Посмотреть сообщение
Bit_Man, не катит так.
У меня все катит!

Добавлено через 2 минуты
The_Immortal, если по фильтру вообще никак, то переходи на запрос самый верняк.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
01.06.2012, 19:42  [ТС]
Bit_Man,

Цитата Сообщение от Bit_Man Посмотреть сообщение
У меня все катит!
Что катит? Вы тему внимательно прочитали?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.06.2012, 20:19
Цитата Сообщение от zlaja_zaja Посмотреть сообщение
запросы почему то не работают
Выложи свои запросы
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
01.06.2012, 20:35  [ТС]
Sasha, так маска тоже не срабатывает.
Пробовал в Аксе напрямую.

Добавлено через 5 минут
Может это у меня глюк такой на двух ноутах? Возвращает пустой результат.

Добавлено через 7 минут
Так, в Аксе надо юзать '*', вместо '%'.
Через АДО возможно и '%' катит.
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
01.06.2012, 20:37
The_Immortal, ты не сказал какая БД. (скорее всего Access)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
01.06.2012, 20:41  [ТС]
Bit_Man, аа, а ты IB имел в виду, да?
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
01.06.2012, 20:50
нет. .
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
01.06.2012, 21:03  [ТС]
Bit_Man, а что тогда?
Я-то речь действительно об Аксе веду.
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.06.2012, 21:12
Цитата Сообщение от The_Immortal Посмотреть сообщение
Sasha, так маска тоже не срабатывает.
Пробовал в Аксе напрямую.
У меня срабатывает
0
 Аватар для zlaja_zaja
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 8
01.06.2012, 23:40
Цитата Сообщение от Bit_Man Посмотреть сообщение
zlaja_zaja, почти тоже самое только на кнопке.
C++
1
2
3
4
5
6
7
8
9
DBGrid1->DataSource->DataSet->Filtered=false;
if (!Edit1->Text.IsEmpty())
  ADOTable1->Filter = "[Фамилия] LIKE '"+ Edit1->Text +"%'";
if (!Edit2->Text.IsEmpty())
 {
  if (!ADOTable1->Filter.IsEmpty()) ADOTable1->Filter = ADOTable1->Filter + " and ";  
  ADOTable1->Filter = ADOTable1->Filter + "[Имя] LIKE '"+ Edit2->Text +"%'" 
 }
if (!ADOTable1->Filter.IsEmpty()) DBGrid1->DataSource->DataSet->Filtered=true;
Добавлено через 1 минуту
У меня все катит!

Добавлено через 2 минуты
The_Immortal, если по фильтру вообще никак, то переходи на запрос самый верняк.
ОГРОМНЕЙШЕЕ СПАСИБО!!!ВЫ МЕНЯ СПАСЛИ!ТЕПЕРЬ Я ВАМ ДОЛЖНА))
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
02.06.2012, 19:26
Цитата Сообщение от zlaja_zaja Посмотреть сообщение
ТЕПЕРЬ Я ВАМ ДОЛЖНА
а вот здесь по подробней

Добавлено через 2 минуты
Цитата Сообщение от The_Immortal Посмотреть сообщение
Я-то речь действительно об Аксе веду.
да тут половина вопросов где БД Access.
Цитата Сообщение от Sasha Посмотреть сообщение
У меня срабатывает
через Фильтр?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
02.06.2012, 21:26  [ТС]
В общем, есть решение. Мало ли кому понадобится.

Итак, задача: пусть в таблице БД Access имеется поле числового типа. Необходимо через компонент ADOTable, пользуясь фильтром, делать поиск по данному полю по маске "цифра%".

К примеру, пусть в этом числовом поле у нас имеются значения:

345
569
236
367
459
301
Мы вводим цифру 3 в поле Edit1, и получаем следующий результат:

345
367
301

Решение:

1. Конструкция "LIKE + %" в фильтре не работает с числовыми полями, поэтому необходимо сделать преобразование этого поля следующим образом:
-заходим в БД, создаем запрос типа:
SQL
1
SELECT *, CStr(Наше_числовое_поле) AS Имя_Этого_Поля FROM Таблица
-сохраняем данный запрос, присваиваем ему имя, типа "Запрос1".
2. В свойстве Table у компонента ADOTable выбираем "Запрос1".
3. И теперь делаем обычный фильтр типа (уже по имени преобразованного поля):
C++
1
Form1->ADOTable1->Filter = "Имя_Этого_Поля LIKE '"+Edit1->Text+"%'";
Ну вот и все.

Честно говоря, не знаю кому это может пригодится, ибо поиск по числовым полям обычно расположен к точному поиску нежели к такой маске

P.S.
Да, забыл оговориться еще, что это для тех, кто по каким-либо причинам не хочет менять тип числового поля на текстовое. В этом случае все решается гораздо проще
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2012, 21:26

Не работает перегрузка индексного оператора [], вместо [int][int] почему то нужно ставить [0][int][int]
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<ctime> #include<conio.h> #include<windows.h> ...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

[C++ Error] Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int'
Всем привет! Пожалуйста , помогите , почему выдает ошибку Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int' ?. Мне нужно...

Как сделать двумерную матрицу с доступом не через int индексы, а через String?
В общем задача такая, нужно сделать двумерную матрицу, но доступ к ее элементам должен производится не через целочисленные индексы, а через...

void _fastcall TForm1::Vector(int x0, int y0, int a, int l);
//--------------------------------------------------------------------------- #include &quot;DateUtils.hpp&quot; // для доступа к SecondOf,...


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

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

Новые блоги и статьи
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить сумму и количество положительных элементов массива, расположенных в четных строках. Решение: Создан документ с. . .
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru