![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тоже фильтрация, но другая [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. Коков смысл поиска по "подчислу"?