Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2005
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Proceso muy largo ?

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.

Última edición por Coco_jac fecha: 21-12-2005 a las 20:28:53.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:51:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi