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

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

DataSet.Locate не дружит с Filter, а надо - как быть [D7]


Страницы:   1 2 3

Silver... ©   (2006-07-15 21:55:00) 

Очень надо чтоб

DataSet.Locate искал только в записях отвечающих условию DataSet.Filter

например если DataSet содержит

ID  Name
---------
1   Name1
2   Name2
3   Name3
4   Name1
5   Name3

после фильтрации остается
ID  Name
---------
4   Name1
5   Name3

DataSet.Locate('Name', 'Name1', [loCaseInsensitive, loPartialKey])
находит ID = 1а надо ID = 4
что делать?


sniknik   (2006-07-23 18:54:00) [41]

тоже заинтересовало, проверил с двумя разного рода датасетами, выход за фильтр в локейт не попадает, вопреки утверждаемому сдесь...
боюсь тут только разговор про DataSet.Filter, а на самом деле используется onFilterRecord... (хоть как то обьяснить утвердждаемое).


Anatoly Podgoretsky   (2006-07-23 18:44:00) [42]

Интересно, что за фильтр наложен, что получился такой результат, что то тут не чисто.


sniknik   (2006-07-23 18:34:00) [43]

> не верю что ктонибудь здесь пользует тока Стандартный VCL
это ты зря, многие используют, я например. и исключительно стандартный. (знаю конторы в которых нестандартные(/некупленные, что зачастую одно и тоже) попросту запрещены. у нас такая контора... была... счас на это не очень внимание обращают, но не изза того чтобы нам полегче было, а просто бардака добавилось с ростом конторы)

> иначе бы писал на ASM-е
а это еще зачем/причем? в смысле знать конечно не повредит но какая связь с VCL?

> PS. Не прошу сделайте/дайте а подскажите
легко. совет не ставь знак равенства между всеми наследниками DataSet... люби конкретику (не только с  DataSet). тогда избежиш "кучю "недорозумений"".


Anatoly Podgoretsky   (2006-07-23 18:25:00) [44]

Я так и не понял, а DataSet это кто?


Silver...   (2006-07-23 17:58:00) [45]


> Вся надежда на дядю

А зачем на дядю - да я пользую сторонние компоненты (не верю что ктонибудь здесь пользует тока Стандартный VCL), иначе бы писал на ASM-е(к сожаленю не знаю, но по такому поводу вючил бы)

 Вообще DataSet.Filter - инструмент удобный, по крайней мере для меня, но имеет кучю "недорозумений" - DataSet.Locate видит и всё остальное, ...

 А вопрос у меня был: Как отфильтровать DataSet на клиенте (делается частенько не бегать на сервер каждый раз за данными) и без DataSet.Close/Open - опять-таки тормоза имеем --- но чтоб отфильтрованные данные небыли видны (по крайней мере DataSet.Locate) потому что DBGridEh - который я сеичас пользую так ищет в списке то что я набираю

PS. Не прошу сделайте/дайте а подскажите


Johnmen   (2006-07-20 09:04:00) [46]


> ага все уже сделано в DBGridEh - менять его ... :(


Ну-ну... Вся надежда на дядю, который за тебя всё сделает?
Или уже "всё" сделал в ЕхЛибГрид. Тогда пользуйся, чего спрашиваешь?


Silver...   (2006-07-20 01:56:00) [47]

Есть:
 Таблица "A" - например Рабочие(IDRab, Name, Ot, Do)
                    Ot/Do - время его "видимости" (когда доступен)
 Таблица "B" - например Заказы(IDZak, IDRab, Ot, Do)
 Таблица "C" - например ЗакРаб(IDZakRab, IDZak, IDRab, N)

Ситуация такая:
 - Открывается заказ с лимитом по времени выполнения (От - До) в LookupName выбираем имя
    и присваиваем [N] -- вот тут надо чтоб в Lookup были только те Рабочие которые подходят
    Заказу[От - До]. Использую фильтрацию и всё работает на ура

 - WHERE - первое что пробовал - не подходит по одной причине переодически надо смотреть на
    предыдущие записи, в этом случае в AfterScroll делаю фильтрацию (DataSetт.Close/Open
    работает неприятно медленно с Filter работает быстрее - но имеет этот баг)

-> Самому проходить по набору данных в поисках нужной записи...
Кстати, скорость по сравнению с Локейт практически не измениться...

ага все уже сделано в DBGridEh - менять его ... :(


Reindeer Moss Eater   (2006-07-16 12:08:00) [48]

Используй TTable + Filter тогда все буде так, как ты хочешь.
В этом случае связка будет эквивалентна TQuery + условие фильтра в секции where. (Фильтрация на сервере)

TQuery + Filter = фильтрация всегда на клиенте


Johnmen   (2006-07-15 22:54:00) [49]

Самому проходить по набору данных в поисках нужной записи...
Кстати, скорость по сравнению с Локейт практически не измениться...


Страницы:   1 2 3

Наверх

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