![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
2 Query на одну таблицу [D6, dBase, FoxPro]
skiph © (2005-09-02 07:03:00)Есть 2 Query, которые ссылаются на одну базу - одна сортирует данные, другая - нет (служит для редакции данных, я уже рассказывал в другой теме про мою задачу). Использую следующий код:
While (i<=j)and not Query.Eof do
begin
mas[i,1]:=Query.FieldByName('Name_b').AsString;
mas[i,2]:=Query.FieldByName('FAKT_ADR').AsString+#10+'Тел.: '+Query.FieldByName('TFON').AsString;
mas[i,3]:='Дир. - '+Query.FieldByName('DFIO').AsString+#10+'Гл.б. - '+Query.FieldByName('GBuh').AsString;
mas[i,4]:=Query.FieldByName('Primech').AsString;
qEditQuery.First;
if Query1.FieldByName('name_b').AsString<>''
then qEditQuery.Locate('name_b',Query1.FieldValues['name_b'],[])
else qEditQuery.Locate('name_b;primech',VarArrayOf([Query1.FieldValues['name_b'],Query1.FieldValues['primech']]),[]);
qEditQuery.Edit;
qEditQuery.FieldByName('DataPrint').AsDateTime:=CurDate;
qEditQuery.Post;
Query.Next;
inc(i);
end;
Где, соответственно, Query - запрос с отсортированными данными, qEditQuery - с неотсортированными. Проблема в следующем. При трассировке на первом проходе цикла: Query.RecNo=1, заношу в массив нужные мне данные и хочу сделать изменения в соответствующей записи, для этого в qEditQuery нахожу нужную ее и изменяю поле (команда qEditQuery.Post выполняется быстро). На втором цикле Query.RecNo уже равен 2, но на команде qEditQuery.Post программа "задумывается" на несколько секунд, после чего Query перескакивает на первую запись (Query.RecNo=1)! В чем заключается проблема, какой параметр нужно изменить, чтобы подобного не происходило?
Пробовал выносить Post за конец цикла, но проблемы это не решало: программа задумывалась на qEditQuery.First.
Можно, конечно, вместо Query.Next использовать Query.RecNo:=i, но хочется разобраться в этом. Потом может не так тормозить будет. (движок BDE)
skiph (2005-09-05 07:33:00) [1]Точно есть! Спасибо, не посмотрел
ЮЮ (2005-09-05 06:07:00) [2]глянь, нет ли у qEditQuery обработчика AfterPost, ибо описанные тобой ужасти порождаются исключительно твоим кодом :)
skiph (2005-09-05 05:05:00) [3]>Sergey13 © (02.09.05 09:12) [2]
>>В чем заключается проблема
>В том, что ты из мухи сделал здоровенного слона, и успешно заблудился между его ногами/бивнями. 8-)
Скорее всего :) Я с BDE уже давным давно не работал, а UpdateQuery вообще никогда не пользовался (не нужно было). Зато за эти дни я столько узнал о ногах и бивнях!!!!! :)
Sergey13 (2005-09-02 09:12:00) [4]>В чем заключается проблема
В том, что ты из мухи сделал здоровенного слона, и успешно заблудился между его ногами/бивнями. 8-)
Зачем 2 кверика? Сделай один и редактируй его. Если не получится напрямую, используй TUpdateQuery.
Ильш (2005-09-02 08:36:00) [5]а нафига ваще Locate использовать? раз уж пользуешься запросами так и делай все через SQL!