Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
2-1126686038
JTAG
2005-09-14 12:20
2005.10.16
Про tray


14-1127401808
vuk
2005-09-22 19:10
2005.10.16
О двоечниках и отличниках.


2-1126616707
Гость22
2005-09-13 17:05
2005.10.16
В чем ошибка?


1-1127458468
RockStorm
2005-09-23 10:54
2005.10.16
отладка DLL


14-1127645246
Федор
2005-09-25 14:47
2005.10.16
Пейджер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский