![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TQuery.Locate
Hermit © (2002-02-05 15:49:00)Существует ли какое-либо ограничение на работу Locate в TQuery, который выбирает данные из нескольких таблиц (около 10), размещенных на сервере?
Сейчас делаю выборку из таблиц, расположенных на сервере, пытаюсь зделать локейт на запись, которая заведомо попадает в выборку - результат отрицательный, если же результат выборки записываю во временную таблицу, затем простой Query (SELECT * FROM TableName) и по нему тот-же Locate - результат положительный. В чем проблема?
Johnmen (2002-02-07 14:45:00) [1]Конечно работать с большим НД - не вполне корректный подход.
Сначала надо попытаться его максимально сузить, накладывая ограничения в запросе.
А по поводу глюка - у меня друган сталкивался именно с таким !
[D5,IB5]
User_OKA (2002-02-07 13:44:00) [2]to Фэ
Советы советами, но, по-моему, форум - это ещё и обмен мнениями. Как говорится, что думаю, то и говорю, а если что и советую, исхожу из личного опыта. :)
Теперь про миллионы. При использовании TFIBQuery я могу и миллион записей выбрать, но клиенту все равно передадутся ровно столько, сколько умещается в TDBGrid (к вопросу о трафике). А вот уж если я Locate запущу, тогда и пойдет перебор всего миллиона. Если же юзеру предоставить возможность гибкой фильтрации, он сам с помощью фильтра может выбрать то, что ему нужно.
Теперь готов послушать, что специалисты говорят.
Фэ (2002-02-07 09:49:00) [3]to User_OKA ©
В форуме Вам пока слушать надо, что специалисты говорят, а не давать самому советы.
Ваш совет про миллионы записей как раз об этом и говорит.
Для того и существует клиент-сервер, чтобы на клиента отдать минимум данных для снижения трафика в первую очередь.
Искать же все равно приходиться, в т.числе и Locate.
По сути же вопроса.
У меня эта ситуация встречалась и, на мой взгляд, это некорректность TDataSet.
Поскольку ситуация встречалась и с Paradox и с СУБД DBISAM и ее TDBISAMQuery, наследницей от TDataset.
Правда, с одной оговоркой - тогда, когда запрос содержал "WHERE .. IN(..)"
User_OKA (2002-02-07 07:25:00) [4]to fnatali © (06.02.02 14:07)
"А такой большой набор - это очень дурной тон"
Да кто тебе это сказал? Если отказаться от Locate и выдавать пользователю с помошью запросов то, что он желает видеть, набор может не десятки тысяч, а миллионы записей содержать!
fnatali (2002-02-06 14:07:00) [5]User_OKA © (06.02.02 13:45)
А если набор данных содержит с десяток тысяч записей, хотел бы я посмотреть на выражение лица юзера, пока он дожидается такого позиционирования на измененную запись! :)
А такой большой набор - это очень дурной тон (IMHO), юзер всё равно не сможет с ним работать.
User_OKA (2002-02-06 13:45:00) [6]to kserg@ukr.net (06.02.02 12:38)
А если набор данных содержит с десяток тысяч записей, хотел бы я посмотреть на выражение лица юзера, пока он дожидается такого позиционирования на измененную запись! :)
kserg@ukr.net (2002-02-06 12:38:00) [7]>Hawk2 Уважаемый, если через запрос, то в рассматриваемом случае он вернет единственную запись...
Я например использую TQuery.Locate для позиционирования на измененную запись после Update и ReOpen обновленного набора данных.
Hawk2 (2002-02-06 12:13:00) [8]Если тебе нужно использовать Locate то может лучше через TTable, а если пользуешся TQuery, то проще через запрос.
yaJohn (2002-02-06 12:06:00) [9]Mojet Filter? Drugih idey net...
kserg@ukr.net (2002-02-06 11:59:00) [10]Никогда с такими глюками с Locate-ом не сталкивался.
Уважаемый, покажи код select-a
и Locate - сдается мне, что проблемы в последней.