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

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

Фильтрация (чуть более, чем обычно) [D6, MSSQL]


equites ©   (2003-05-21 18:22:00) 

Что, казалось бы, может быть проще фильтра? Я всегда думал, что он в точности повторяет синтаксис WHERE, но - нет ...

У меня такой вот (очень наедюсь, что для Вас он простой) вопрос:
формирую динамически фильтр следующего вида :

((F1=Value) OR ...(Fi=Value)) AND ((F1=Value) OR ... (Fj=Value)),
где j, i - заранее неизвестно,

при фильтрации данных возникает ошибка - " Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another".

Если пробовать "раскрыть скобки", т.е перемножить всё на всё - получается, но больно уж большой и грмоздкий фильтр выходит ... не говоря уж о механизме. Может кто-нибудь просвятит неграмотного, а ?


ЮЮ   (2003-05-22 02:34:00) [1]

>в точности повторяет синтаксис WHERE
WHERE выполняется на сервере и у MS SQL он "наворочен" до безобразия, а фильтр - на клиенте, т.е. ограничен рамками используемого компонента.

Интересно, как можно перемножить (F1 = 1) AND (F1 = 2) ?
Обычно сложное условие имеет вид
((F1=Value) AND...(Fi=Value)) OR((F1=Value) AND... (Fj=Value))


noteens   (2003-05-21 21:31:00) [2]

Если i и j заранее не известно, то вроде бы они переменные. Тогда склеивай строкии так: "F"+inttostr(i)+"@##@"+"F"+inttostr(j)+"#@#@#"; если i и j типа integer. а в общем преобразование типов ты знаешь)))


Наверх

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