Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Тоже фильтрация, но другая [D7, MySQL]


DmitryNekl ©   (2004-03-25 10:19:00) 

Вопрос, в общем-то, по sql...

Есть в инете база mysql, подключаюсь к ней с помощью компонентов ADO.

Хочу отфильтровать табличку по вхождению содержимого Edit1. В случае с символьными полями все понятно:

if Edit1.Text<>'' then ADOQuery.Filter:='([title_gr] Like ''%'+ Edit1.Text +'%'')';

А как сделать, чтобы обрабатывались еще и числовые поля? Т.е., например, в поле id записано 0001235, Edit1.Text='1' - и чтобы эта запись показывалась?


Плохиш   (2004-03-25 12:10:00) [1]


> Anatoly Podgoretsky ©   (25.03.04 11:48) [10]
> Несколько сотен мегабайт через Интернет :-)

:-))
У людей, задающих подобные вопросы, нету сотен мегабайт через Интернет
;-)


Alex_Bredin   (2004-03-25 12:09:00) [2]

у записей нет свойств


DmitryNekl   (2004-03-25 12:05:00) [3]

Спасибо всем ответившим.

Еще вопрос... наверное, самый глупый :).

Нет ли у текущей записи какого-либо свойства, которое представляет все поля в виде одной текстовой строки с каким-либо разделителем?


DmitryNekl   (2004-03-25 12:04:00) [4]

2 Anatoly Podgoretsky

Просветите, пожалуйста, по алгоритмам работы свойства Filter и события OnFilterRecord. Я правильно понял Ваше последнее высказывание: при использовании OnFilterRecord выполняется запрос к серверу, а при использовании Filter операция выполняется над уже полученными данными?


Anatoly Podgoretsky   (2004-03-25 11:48:00) [5]

Плохиш   (25.03.04 11:45) [8]
Несколько сотен мегабайт через Интернет :-)


Anatoly Podgoretsky   (2004-03-25 11:45:00) [6]

LIKE применим только для текстовых данных!


Плохиш   (2004-03-25 11:45:00) [7]

OnFilterRecord


Alex_Bredin   (2004-03-25 11:45:00) [8]

а как определяется, в каком поле производится поиск?
имхо, налицо надуманное усложнение
лучше сделать комбобокс с полями, и при выборе приводить содержимое едит к нужному типу.


DmitryNekl   (2004-03-25 11:39:00) [9]

2 Alex_Bredin

Согласен! Пример был надуман. Но хочется :) Для общности.

2 Term

Опять же согласен... но это же частность... Пусть число 1235, тогда должно выводится при поиске по '1', '2', '3' или '5'.

2 Mike_Goblin

Between - это не совсем решение, т.к. у нас одно поле на форме, по вхождению содержимого которого мы ищем... Второе решение тоже не подходит, т.к. у нас не sql-запрос, а свойство filter. В нем можно использовать like и <,>,= в разных вариациях... Приведение типа не понимает.

Уточню еще раз постановку задачи:

Есть таблица и Edit. В таблице есть как строковые, так и числовые поля. При вводе любого текста в Edit и нажатии на кнопку в таблице должны отобразиться только те записи, в любом(число, строка, дата) поле которых содержится  подстрока Edit. Фильтрацию осуществлять с использованием свойства Filter (изначально я не совсем корректно поставил вопрос, не выделив эту особенность. Приношу свои извинения).

Может, в моей постановке задача не имеет решения и придется переделать все с использованием не свойства Filter, а события ADOQueryFilterRecord?


Alex_Bredin   (2004-03-25 11:14:00) [10]


> в таблице лежит размер файла, а человек помнит, что файл
> от мегабайта до двух... а больше ничего не помнит :). Соответственно,
> нужно искать вхождение единички в числовом поле

ох не нужно, единичка может где угодно быть


Term   (2004-03-25 11:01:00) [11]


> в поле id записано 0001235

0001235 числом быть не может никак!!! если бы было число то выглядело бы так 1235... а это строка так что с этим полем можеш пользоваться строковым поиском без всяких преобразований


Mike_Goblin   (2004-03-25 10:46:00) [12]

однако, between 1000 and 2000 - это одно решение

либо преобразовать число в строку и пользоваться строковым поиском
where cast(num_field as varchar) like ...


DmitryNekl   (2004-03-25 10:38:00) [13]

2 Sergey13:

1. Да, это число.
2. В основном, для общности. В таблице содержатся как строковые, так и числовые данные. Я хочу, чтобы поиск был универсальным и искались данные по введенной подстроке по всем полям.
Конкретный пример (хотя немного надуманный): в таблице лежит размер файла, а человек помнит, что файл от мегабайта до двух... а больше ничего не помнит :). Соответственно, нужно искать вхождение единички в числовом поле


Sergey13   (2004-03-25 10:27:00) [14]

1. Ты уверен, что 0001235 - это число?
2. Коков смысл поиска по "подчислу"?


Наверх

Титульная страница Поиск, карта сайта Написать письмо