Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

2 Query на одну таблицу   Найти похожие ветки 

 
skiph ©   (2005-09-02 07:03) [0]

Есть 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)


 
Ильш   (2005-09-02 08:36) [1]

а нафига ваще Locate использовать? раз уж пользуешься запросами так и делай все через SQL!


 
Sergey13 ©   (2005-09-02 09:12) [2]

>В чем заключается проблема
В том, что ты из мухи сделал здоровенного слона, и успешно заблудился между его ногами/бивнями. 8-)
Зачем 2 кверика? Сделай один и редактируй его. Если не получится напрямую, используй TUpdateQuery.


 
skiph ©   (2005-09-05 05:05) [3]

>Sergey13 ©   (02.09.05 09:12) [2]
>>В чем заключается проблема
>В том, что ты из мухи сделал здоровенного слона, и успешно заблудился между его ногами/бивнями. 8-)

Скорее всего :) Я с BDE уже давным давно не работал, а UpdateQuery вообще никогда не пользовался (не нужно было). Зато за эти дни я столько узнал о ногах и бивнях!!!!! :)


 
ЮЮ ©   (2005-09-05 06:07) [4]

глянь, нет ли у qEditQuery обработчика AfterPost, ибо описанные тобой ужасти порождаются исключительно твоим кодом :)


 
skiph ©   (2005-09-05 07:33) [5]

Точно есть! Спасибо, не посмотрел



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.079 c
2-1127000813
Mid
2005-09-18 03:46
2005.10.16
как переместить изображение с одной Панели на другую, если...


14-1127651029
alsov
2005-09-25 16:23
2005.10.16
Компонент - кнопка с 4 положениями (Up, MouseMove, Down, Disable)


14-1127442865
КаПиБаРа
2005-09-23 06:34
2005.10.16
А что будет, если


1-1127510917
Студент:(
2005-09-24 01:28
2005.10.16
Вычисление С в степени N с минимальным количеством умножений


14-1127666296
fastorla
2005-09-25 20:38
2005.10.16
Как можно подчепить SubItem в компоненте TreeView1