Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2010, 11:25   #1
Spot
Пользователь
 
Аватар для Spot
 
Регистрация: 04.06.2008
Сообщений: 32
По умолчанию ADO filter like

Есть ADOQuery:
Код:
select concat_ws(',',ulica,dom) as adr
from adres
order by adr
Набор данных примерно:
Цитата:
...
ул. Октябрьская, 11/1
ул. Октябрьская, 11/2
...
В свойстве фильтр набираю:
Код:
adr like '%Окт%'
filtered делаю true
Все нормально работает, выводятся все адреса удовлетворяющие фильтру.
Когда хочу вывести адреса с ул. Октябрьской с домами с '1' в свойстве фильтр набираю:
Код:
adr like '%Окт%1%'
Фильтр выводит пустой набор
Как реализовать такой фильтр?
Spot вне форума Ответить с цитированием
Старый 02.02.2010, 12:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По-моему так с вычисляемыми полями нельзя поступать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2010, 12:29   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

наверное так
Код:
adr like '%Окт%' and adr like '%1%'
но сам по себе такой фильтр %_% тяжеловат - потому что приходится лопатить все данные
soleil@mmc вне форума Ответить с цитированием
Старый 03.02.2010, 08:02   #4
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

У меня есть схожая проблема. В фильтре компонента ADOQuery пишу следующий код:
Цитата:
(Description LIKE '%ка%') AND (Priority='U 00' OR Priority='H 00')
Выдает ошибку несоответствия типов. Использовать запрос не очень хочется, так как БД большая и запросы выполняются довольно долго.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 03.02.2010, 09:49   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А на чем ошибка на первой или второй скобке?
Цитата:
так как БД большая и запросы выполняются довольно долго.
А фильтр т же запросы выполняет, так что ты ниче не выигрываешь мне думается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.02.2010, 14:58   #6
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Вещь конечно странная, но. Такой фильтр не проходил:
Цитата:
(Description LIKE '%ка%') AND (Priority='U 00' OR Priority='H 00')
Без скобок же все в порядке
Цитата:
Description LIKE '%ка%' AND Priority='U 00' OR Priority='H 00'
Не рискну предположить в чем тут дело. Если кто знает поделитесь.

ADOQuery. Сортировка не работает если есть скобки. Запрос вида:
Цитата:
Description LIKE '%ка%' AND (Priority='L 00' OR Priority<>'H 00')
пришлось переделать на проверку несовпадения.
Цитата:
Description LIKE '%ка%' AND Priority<>'U 00' AND Priority<>''
После этого все работает нормально. Корня зла не ведаю
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)

Последний раз редактировалось Stilet; 08.02.2010 в 11:22.
Son вне форума Ответить с цитированием
Старый 08.02.2010, 14:55   #7
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

А корень действительно злой. Оказывается нельзя в скобках группировать с OR. то есть такой запрос:
Цитата:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
надо переделать на вот такой:
Цитата:
(LastName = 'Smith' AND FirstName = 'John') OR
(LastName = 'Jones' AND FirstName = 'John')
Источник: http://docs.sun.com/source/817-2514-10/Ch11_ADO115.html
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 08.02.2010, 15:18   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а что мешает написать так?
Код:
LastName in ('Smith', 'Jones') AND FirstName = 'John'
soleil@mmc вне форума Ответить с цитированием
Старый 08.02.2010, 16:30   #9
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

У меня оператор IN не работает. По ссылке среди допустимых операторов его тоже нет.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGridEh и Filter lexaltd БД в Delphi 3 28.05.2009 12:05
Filter в IBQuery Yurk@ БД в Delphi 3 23.01.2009 23:26
Проблема с Filter Editor SG13 Общие вопросы Delphi 2 04.07.2008 17:24
OpenDialog.Filter Artificial Общие вопросы Delphi 5 17.06.2008 00:00