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




Вниз

TQuery.Locate 


Hermit   (2002-02-05 15:49) [0]

Существует ли какое-либо ограничение на работу Locate в TQuery, который выбирает данные из нескольких таблиц (около 10), размещенных на сервере?
Сейчас делаю выборку из таблиц, расположенных на сервере, пытаюсь зделать локейт на запись, которая заведомо попадает в выборку - результат отрицательный, если же результат выборки записываю во временную таблицу, затем простой Query (SELECT * FROM TableName) и по нему тот-же Locate - результат положительный. В чем проблема?



kserg@ukr.net   (2002-02-06 11:59) [1]

Никогда с такими глюками с Locate-ом не сталкивался.
Уважаемый, покажи код select-a
и Locate - сдается мне, что проблемы в последней.



yaJohn   (2002-02-06 12:06) [2]

Mojet Filter? Drugih idey net...



Hawk2   (2002-02-06 12:13) [3]

Если тебе нужно использовать Locate то может лучше через TTable, а если пользуешся TQuery, то проще через запрос.



kserg@ukr.net   (2002-02-06 12:38) [4]

>Hawk2 Уважаемый, если через запрос, то в рассматриваемом случае он вернет единственную запись...
Я например использую TQuery.Locate для позиционирования на измененную запись после Update и ReOpen обновленного набора данных.



User_OKA   (2002-02-06 13:45) [5]

to kserg@ukr.net (06.02.02 12:38)
А если набор данных содержит с десяток тысяч записей, хотел бы я посмотреть на выражение лица юзера, пока он дожидается такого позиционирования на измененную запись! :)



fnatali   (2002-02-06 14:07) [6]

User_OKA © (06.02.02 13:45)
А если набор данных содержит с десяток тысяч записей, хотел бы я посмотреть на выражение лица юзера, пока он дожидается такого позиционирования на измененную запись! :)

А такой большой набор - это очень дурной тон (IMHO), юзер всё равно не сможет с ним работать.



User_OKA   (2002-02-07 07:25) [7]

to fnatali © (06.02.02 14:07)
"А такой большой набор - это очень дурной тон"
Да кто тебе это сказал? Если отказаться от Locate и выдавать пользователю с помошью запросов то, что он желает видеть, набор может не десятки тысяч, а миллионы записей содержать!



Фэ   (2002-02-07 09:49) [8]

to User_OKA ©
В форуме Вам пока слушать надо, что специалисты говорят, а не давать самому советы.
Ваш совет про миллионы записей как раз об этом и говорит.
Для того и существует клиент-сервер, чтобы на клиента отдать минимум данных для снижения трафика в первую очередь.
Искать же все равно приходиться, в т.числе и Locate.

По сути же вопроса.
У меня эта ситуация встречалась и, на мой взгляд, это некорректность TDataSet.
Поскольку ситуация встречалась и с Paradox и с СУБД DBISAM и ее TDBISAMQuery, наследницей от TDataset.
Правда, с одной оговоркой - тогда, когда запрос содержал "WHERE .. IN(..)"



User_OKA   (2002-02-07 13:44) [9]

to Фэ
Советы советами, но, по-моему, форум - это ещё и обмен мнениями. Как говорится, что думаю, то и говорю, а если что и советую, исхожу из личного опыта. :)
Теперь про миллионы. При использовании TFIBQuery я могу и миллион записей выбрать, но клиенту все равно передадутся ровно столько, сколько умещается в TDBGrid (к вопросу о трафике). А вот уж если я Locate запущу, тогда и пойдет перебор всего миллиона. Если же юзеру предоставить возможность гибкой фильтрации, он сам с помощью фильтра может выбрать то, что ему нужно.
Теперь готов послушать, что специалисты говорят.



Johnmen   (2002-02-07 14:45) [10]

Конечно работать с большим НД - не вполне корректный подход.
Сначала надо попытаться его максимально сузить, накладывая ограничения в запросе.
А по поводу глюка - у меня друган сталкивался именно с таким !
[D5,IB5]




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




Наверх





Память: 0.73 MB
Время: 0.037 c
6-19289           Dennis1809            2001-12-18 17:49  2002.03.07  
HTML --> Нормальный текст HEEELP !!!


6-19295           AIRS                  2001-12-19 12:57  2002.03.07  
PowerSocket


3-19065           Ulikoff               2002-02-07 11:20  2002.03.07  
Ошибка сетевого доступа к БД


1-19213           Darkwin               2002-02-19 13:37  2002.03.07  
Помогите разобраться с какой - то глупой непонятностью


3-19107           Hermit                2002-02-05 15:49  2002.03.07  
TQuery.Locate