Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

TQuery.Filter 


koks   (2002-03-04 17:51) [0]

Filter: string.
В данное свойство может вставляться выражения типо FieldName = 1 и пр...

Вопрос: насколько сложным может быть условие, передаваемое в Filter.

1. Потянет ли оно конструкцию типа:
((F1 = X1) and (F2 = Y1) and (F3 = Z1)
or (F1 = X2) and (F2 = Y2) and (F3 = Z2)
or (F1 = X3) and (F2 = Y3) and (F3 = Z3)
or (F1 = X4) and (F2 = Y4) and (F3 = Z4)
or (F1 = X5) and (F2 = Y5) and (F3 = Z5)
or (F1 = X6) and (F2 = Y6) and (F3 = Z6)
...
or (F1 = XN) and (F2 = YN) and (F3 = ZN))
где N - примерно 25...

2. Потянет ли конструкцию:
((F1 IN (X, Y, Z) AND F2 IN (K, L, M))
OR F1 in (X1, Y1, Z1) AND F2 IN(K1, L1, M1))

Хочу Where-инструкцию SQL преобразовать в фильтр.
Переписывать программу под использование OnFilterRecord очень долго...



Val   (2002-03-04 17:57) [1]

простите, но зачем переделывать where в фильтр???



Anatoly Podgoretsky   (2002-03-04 23:24) [2]

Насчет потянет ли, сил наверно не хватает проверить, надо просить других, попробуй поспать, отдохнуть.



Фэ   (2002-03-04 23:29) [3]

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



Reindeer Moss Eater   (2002-03-05 08:48) [4]

А такая вот разница
TQuery + Filter = обработка на клиенте
TTable + Filter = обработка на сервере
TQuery + Where = обработка на сервере



koks   (2002-03-05 09:56) [5]

2APodgoretskiy...
Ваше ехидство панет гнилью... Между прочим - моя профессия (и специальность) отнюдь не связана с программированием. Просто мне волей не волей приходится этим заниматься потому, что наш "Многоуважаемый" IT-отдел не в состоянии (ввиду отсутсвия соответствующего образования и мозгов) удовлетворить запросы маркетингового отдела в части ПО. Они мне, кстати, тоже говорят что-то подобное тому, что высказали ВЫ... очень похожее.. А сами из FoxPro 2.5 не могут вылезти. Так что спасибо, что напомнили что я занимаюсь не своим делом... впрочем - я это и сам знаю... и других дел тоже полно, спать некогда.

2VAL и др.
Я не собираюсь передавать Where.. Я собираюсь передавать туда Условие (которое идет после Where). А нужно это вот зачем - у меня довольно сложная форма, которая одновременно отображает данные и позволяет задать условие на выборку. (Условия многовложенные - см. выше). Там даже есть что-то похожее на бланк запроса в Access.
Если задавать условие - она генерит SQL запрос... делает выборку в отдельный массив - и для этого массива открывает такую же форму....
Задача - сделать так, чтобы данные, удовлетворяющие условиям SQL Запроса отображались тут-же, в этой же форме, т.е. условияе SQL накладывалось (фильтром).
Если TQuery.Filter потянет такое условие - хорошо - сделать можно быстро, если не потянет - плохо - делать ОЧЕНЬ долго...
Господа мастера! дайте совет



Johnmen   (2002-03-05 10:14) [6]

Filter даже с 1000 условий потянет, нет вопросов, но какая будет производительность - надо смотреть по месту...



Val   (2002-03-05 10:38) [7]

>koks © (05.03.02 09:56)
я спрашивал не про передачу where, а про переделывание SQL-запроса в фильтр, поскольку никто не мешает вам, думаю, генерировать любой запрос по вашим данним динамически и отображать его результат в какой угодно форме, хоть сразу в нескольких..
По поводу "потянет ли конструкцию.." - зря вы так с Подгорецким, поскольку он, справедливо, по-моему, заметил, что раз у вас есть конструкция, почему бы вам не попробовать ее в фильтре самому? И икаких намеков на то, что вы занимаетесь не своим делом я в упор не вижу, извините.



koks   (2002-03-05 12:41) [8]

Спасибо за отклики!
2Val - вся феня в следующем: у меня используются SQL-запросы. (т.е. реляцилнный доступ) - через WHERE - инструкцию. А индексирование (для DBase-овских таблиц по крайней мере) подразумевает навигационный доступ..
Мой пользователь хочет и то и то одновременно...
У меня cозрела мысль: передать Where -конструкцию в TQuery.Filter (отрубив предварительно Where) - И ВСЕ! Но так как здесь два принципиально разных доступа к данным, у меня возникло сомнение... Вот я и решил проконсультироваться у знатоков...
В ответ получил предложение поспать..... любой, по-моему разозлиться. Я, конечно, мог ко всему прийти сам опытным путем - только время уймища. Успел только схватить по верхам.
А все что мне нужно было - это ответ Johnmen"a За что ему ОГРОМНОЕ СПАСИБО!



Anatoly Podgoretsky   (2002-03-05 20:26) [9]

Reindeer Moss Eater (05.03.02 08:48)
Расскажи где ты сервер нашел?

Reindeer Moss Eater (05.03.02 08:48)
Это не ехидство, а просто любовь к заляве или подобное, самому не написать этот текст, надо что бы кто то другой сделал. Был бы вопрос технический, а то простой набор текста и запуск программы на проверку, никакого ноу-хау. И твои коллеги высказали вполне справедливо, а то что они работают с FoxPro 2.5, то возможно этому есть причины кроме профессональных знаний.

Вот по вопросу под номером 2 другое дело, такой тип фильтра не поддерживается.

koks © (05.03.02 12:41)
Я то же разозлился, потому что другой интерпритации данный вопрос не подразумевает.



Reindeer Moss Eater   (2002-03-05 20:40) [10]

>Anatoly Podgoretsky
Ну не заметил я в вопросе что речь про dBase и FoxPro.
А второй абзац мне за что?



Anatoly Podgoretsky   (2002-03-06 08:09) [11]

Извини это уже я не заметил, что влепил заголовок, естественно это я Коксу отвечал, так как он не понял суть того что я ему написал и по ошибке влепил не ту ссылку :-(



koks   (2002-03-06 09:31) [12]

Ну все ! Сколько все воды налили - а я так и не понял можно ли мои условия в фильтр напрямую ставить...
APodgoretski! Все из-за вас...
Я ведь понимаю, что можно попробовать самому... Но ведь я задал простой вопрос - МОЖНО ИЛИ НЕЛЬЗЯ. На него ответить по-моему очень просто.... если знаешь... Если не знаешь, конечно, сложне..
У меня наверное причины были чтобы сначала спросить а потом реализовывать...(Наверное такие же, как у нашего IT оставаться - на FoxPro).
ТАК ВСЕ - ТАКИ МОЖНО ИЛИ НЕЛЬЗЯ!
Заранее спасибо..



Shirson   (2002-03-06 13:06) [13]

Первую конструкцию фильтр потянет, вторую - нет. Оператор in не входит в круг его понятий.

Посмотри в хелпе. TBDEDataSet -> Properties -> Filter -> SettingTheFilterProperty



koks   (2002-03-06 15:23) [14]

СПАСИБО!



Val   (2002-03-06 15:36) [15]

Не хочется быть занудой, но сравним:

koks © (06.03.02 09:31)
Ну все ! Сколько все воды налили - а я так и не понял можно ли мои условия в фильтр напрямую ставить...
APodgoretski! Все из-за вас...

и
Anatoly Podgoretsky © (05.03.02 20:26)
..
Вот по вопросу под номером 2 другое дело, такой тип фильтра не поддерживается.
..

Нету в жизни справедливости :))



Malder   (2002-03-06 16:01) [16]

Хех. Смешную вы дискуссию развели.
У меня нет сейчас под рукой Delphi и я не могу написать код, выполнить и сказать результат. Так что не знаю как для этого случая, а вот вообще, при большом числе параметров Filter выдает ошибку, и число этих параметров не так уж велико... так что советую не злоупотреблять этим и искать альтернативные методы фильтрации. Да и вообще когда фильтры такие сложные - это обычно говорит о неправильной архитектуре базы.



koks   (2002-03-06 17:34) [17]

ВСЕМ СПАСИБО! ВОЙНА ОКОНЧЕНА - МОЖНО ИДТИ ПО ДОМАМ...



Anatoly Podgoretsky   (2002-03-06 20:32) [18]

koks © (06.03.02 09:31)
Тебе уже ответили, что можно, но только первое и не я один, и предложили вставить и проверить, а не заставлять это делать нас (это уже я, по тому что с моей точки зрения это или наглость или лень). В принчипе, что бы точно ответить надо знать, что такое Xn, Yn, Zn, а это только ты знаешь.

Если тебя что то другое интереусет, то ты не объясняешь и не указываешь причины по которым ты не можешь сам написать это в фильтре. Может тебя вообще интересует есть ли ограничения на длину выражения фильтра, конечно есть, но ты про это не справшиваешь.

Вместо того что бы спокояно разобрать и объяснить причины, ты выражаешь просто обиду, вот я и говорю _не понял_



koks   (2002-03-12 11:04) [19]

APodgorodetski...
Про свою обиду я, конечно, согласен...
Но вот разве трудно было Ваш последний ответ, который содержит конструктивный подход, поместить в самое начало... а предложение поспать - в конец. По-моему, вы тоже были в неважном настроении и обижаться есть за что.

Насчет что такое Xn, Yn, Zn Вы абсолютно правы....
Ограничение на длину меня не интересовало т.к. я знал что ее не достигну.

А вообще, претензии по поводу литературного построения вопроса не принимаются. Уверяю Вас, не из лени... Из лени - это наш IT мне говорит, что "попробуй сам - нам некогда" (налицо отказ от выполнения своих прямых обязанностей). Вот я и пробую как могу, во внеурочное время, совмещая с "основным производственным процессом", как говорили в совковые времена.
Здесь много похожих вопросов задается. Если у вас "Другой Уровень" - зачем Вы сюда ходите. Я лично не стестняясь говорю, что хожу сюда ради ЭКОНОМИИ ВРЕМЕНИ. Не понимаю почему Вы это ставите в претензию. И ни кого я ничего делать не заставлял - я задал вопрос можно или нельзя...
EOF





koks   (2002-03-12 11:13) [20]

APodgorodetski...
Про свою обиду я, конечно, согласен...
Но вот разве трудно было Ваш последний ответ, который содержит конструктивный подход, поместить в самое начало... а предложение поспать - в конец. По-моему, вы тоже были в неважном настроении и обижаться есть за что.

Насчет что такое Xn, Yn, Zn Вы абсолютно правы....
Ограничение на длину меня не интересовало т.к. я знал что ее не достигну.

А вообще, претензии по поводу литературного построения вопроса не принимаются. Уверяю Вас, не из лени я... Из лени - это наш IT мне говорит, что "попробуй сам - нам некогда" (налицо отказ от выполнения своих прямых обязанностей). Вот я и пробую как могу, во внеурочное время, совмещая с "основным производственным процессом", как говорили в совковые времена.
Здесь много похожих вопросов задается. Если у вас "Другой Уровень" - зачем Вы сюда ходите. Я лично не стестняясь говорю, что хожу сюда ради ЭКОНОМИИ ВРЕМЕНИ. Не понимаю почему Вы это ставите в претензию. И ни кого я ничего делать не заставлял - я задал вопрос можно или нельзя...
EOF





Anatoly Podgoretsky   (2002-03-12 23:20) [21]

Очень просто, надо было набрать выражение и попробовать, а не расчитывать, что это за тебя сделает другой, тем более что для этого надо создавать специальную тестовую базу, а про более поздний вопрос, это уже после уточнений.
Насчет твоих IT я не могу обсуждать, кто из вас прав, не знаю я ващей специфики, но могу сказать, что тоже в некоторых случаях приходится так отвечать, зависит от нагрузки, в чии обящанности входит, от самого вопроса и других причин. Но всегда прекрасно находим общий язык, а вот нахлебников не жалую, они должны сами делать свою часть работы, но на помощь всегда могут расчитывать.



sniknik   (2002-03-12 23:42) [22]

Скандальный тип. Я бы встал на сторону IT. Если бы пришлось выбирать. Только представлю как он им ставит задачу и что отвечает если не понял. А святая уверенность что он разбирается в задаче лутше специалистов, чего стоит!




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.78 MB
Время: 0.043 c
1-9527            Biryk                 2002-03-23 06:47  2002.04.04  
Взлом DCU


3-9408            Surprising            2002-03-13 09:47  2002.04.04  
Маска на DBEdit


1-9524            Лана Розанова         2002-03-23 17:16  2002.04.04  
Найти и удалить.


1-9475            Dimedrol              2002-03-21 10:38  2002.04.04  
Настраиваемый интерфейс


1-9493            DNT                   2002-03-25 21:05  2002.04.04  
Можно ли узнать, в какой части экрана расположен таск бар?