Hola amigos del foro, necesito nuevamente su ayuda sucede que trabajo con tablas PARADOX y tengo que trabajar con tablas del sistema , es decir pequeños modulos que utilicen esas tablas tengo un proceso el cual toma tiempo
//SQLCodigoclie2='Select cclie from clie01 where Substring(cclie from 1 for 1) between '+ chr(39)+'a'+chr(39)+ ' and '+ chr(39)+'z'+ chr(39)+' Order by cclie asc';
Tengo cerca de 13000 registro de esta consulta, lueo realizo un bucle para barrer el Recorset
pongo 800, solo para ver el tiempo , cosa que en realida no debe ir solo es para efectos de prueba
Código:
SQLquerytmp:=ObtenerSQL(SQLCodigoclie2);
indice:=0;
while not SQLquerytmp.Eof and (indice<=800)do
begin
Codigoclie:=SQLquerytmp.Fields[0].asstring;
SQLquery:=ObtenerSQL(SQLFindKardexclieS1+chr(39)+Codigoclie+chr(39));
if SQLquery.RecordCount>0 then // Tiene movimientos
begin
Saldo1:=RoundTo(SQLquery.fields[0].asfloat,-2);
Sqlquery.SQL.Clear;
Sqlquery.Close;
SQLquery:=ObtenerSQL(SQLFindKardexclieS2+chr(39)+Codigoclie+chr(39));
Saldo2:=RoundTo(SQLquery.fields[0].asfloat,-2);
if Saldo1=Saldo2 then // No tiene saldo
if saldo1<=350 then // Saldo menor o igual a 350 soles
begin
EjecutarSQL(SQLUpdateClienteKard,'JA078',Codigoclie); // Actualizo Kardex de Cliente
SQLquery:=ObtenerSQL(SQLFindClienteMovInv+chr(39)+Codigoclie+chr(39)); // Verificar si el cliente tiene Movimientos
if SQLquery.RecordCount>0 then
EjecutarSQL(SQLUpdateClienteMovInv,'JA078',Codigoclie); // Actualizo Movimientos de Cliente
EjecutarSQL(SQLUpdateClienteFact,'JA078',Codigoclie); // Actualizo Facturas de Cliente
EjecutarSQL(SQLDeleteClie,Codigoclie);}
end;
end
else
EjecutarSQL(SQLDeleteClie,Codigoclie); // Borra al cliente de la tabla CLIE01
Sqlquery.Close;
SQLquerytmp.Next;
inc(indice);
gbar.Progress:=gbar.Progress+1;
end;
Sqlquery:=nil;
SQLquerytmp.Close;
SQLquerytmp:=nil;
end;
el problema aqui sucede que si pongo menos de 700 todo sale bien , pero cuando pongo 800 o mas sale un mesaje que dice:
LOCK FILR HAS GROWN TOO LARGE
A que se puede deber esto , ya que en realidad el recorrido total esta mas o menos 13000 veces
Espero sus comentarios.