Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Тоже фильтрация, но другая   Найти похожие ветки 

 
DmitryNekl ©   (2004-03-25 10:19) [0]

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

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

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

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

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


 
Sergey13 ©   (2004-03-25 10:27) [1]

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


 
DmitryNekl ©   (2004-03-25 10:38) [2]

2 Sergey13:

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


 
Mike_Goblin ©   (2004-03-25 10:46) [3]

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

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


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


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

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


 
Alex_Bredin ©   (2004-03-25 11:14) [5]


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

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


 
DmitryNekl ©   (2004-03-25 11:39) [6]

2 Alex_Bredin

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

2 Term

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

2 Mike_Goblin

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

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

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

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


 
Anatoly Podgoretsky ©   (2004-03-25 11:45) [7]

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


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

OnFilterRecord


 
Alex_Bredin ©   (2004-03-25 11:45) [9]

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


 
Anatoly Podgoretsky ©   (2004-03-25 11:48) [10]

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


 
DmitryNekl ©   (2004-03-25 12:04) [11]

2 Anatoly Podgoretsky

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


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

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

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

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


 
Alex_Bredin ©   (2004-03-25 12:09) [13]

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.046 c
3-1080189793
dm37
2004-03-25 07:43
2004.04.25
Корректная обработка доступа к процедурам MS SQL Server


14-1080247544
Undert
2004-03-25 23:45
2004.04.25
PageProducer на РHP


3-1080194959
denmin
2004-03-25 09:09
2004.04.25
Проблема с ADOTable.


1-1081120749
Broot
2004-04-05 03:19
2004.04.25
Генерация кривой


7-1077958447
Прямой
2004-02-28 11:54
2004.04.25
Как узнать CD-ROM это привод или виртуальный?