![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DataSet.Locate не дружит с Filter, а надо - как быть [D7]
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]Самому проходить по набору данных в поисках нужной записи...
Кстати, скорость по сравнению с Локейт практически не измениться...