![]() |
#6 |
Участник
|
В общем, я не знаю как это комментировать...
Есть, скажем, процедура у меня. Называется она, допустим, Proc1. И есть в этой процедуре следующий кусок кода (переменные RecRef и RecRef2 - локальные). Бегаю я только по 17-й таблице с парой миллионов записей, предварительно натравив рекрефу на 17-ю, разумеется: Proc1() IF RecRef.FIND('-') THEN BEGIN REPEAT RecRef2 := RecRef.DUPLICATE; RecRef2.CLOSE; UNTIL RecRef.NEXT = 0; Система в этом случае валится через непродолжительное время. Делаю следующее изменение... Proc1() IF RecRef.FIND('-') THEN BEGIN REPEAT Proc2(RecRef,RecRef2); RecRef2.CLOSE; UNTIL RecRef.NEXT = 0; Proc2(VAR RecRefFrom,VAR RecRefTo) RecRefTo := RecRefFrom.DUPLICATE; ...и полено начинает работать. Т.е. надо не просто локальными объявить переменные, но и еще процедуру для дупликейта отдельную создать. Серж, Артем, спасибо за дискуссию. Хренову тучу времени убил на этот ад. Может кому эта фигня тоже полезной окажется... ЗЫ: коллеги, попробуйте на своих больших базах подобное. Возможно, конфа сервера влияет... |
|