Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

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

31.05.2012, 22:34. Показов 4150. Ответов 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
Ответ Создать тему
Новые блоги и статьи
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru