Codigo muy lento AYUDA POR FAVOR!!!!
Publicado por Gabriela (40 intervenciones) el 19/07/2005 20:11:18
Hola a todos, bueno tlengo un problema con un codigo que tengo para hacer una actualizacion y grabado en varias tablas, ya habia mandado este menseje pero no tube respuestta y la verdad no se que hacer estoy desesperada, de antemando muchas gracias,
bueno el codigo es este:
************************************************************************************************
**** de la tabla llamada cargo, que tienen el campo au=1 les agrego al campo aut tambien como 1******
SELECT cargo
GO top
DO while!EOF()
IF cargo.au=1
IF red([R], [cargo])
replace cargo.aut WITH 1
UNLOCK
FLUSH
ENDIF
ENDIF
skip
ENDDO
*********************************
******Ahora en la tabla cel_data tengo que poner un total el cual sale de la suma de varios campos de la tabla cargo*********
SELECT cel_data
SET ORDER TO cel_da01
GO top
DO while!EOF()
vfoliopx= cel_data.folio
SELECT cargo
SET ORDER TO folio
SEEK(vfoliopx)
IF FOUND()
SUM totort,tothon FOR cargo.folio= cel_data.folio AND cargo.aut=1;
TO vtotort,vtothon
SELECT cel_data
IF red("R","cel_data")
replace cel_data.cargo WITH Vtotort+Vtothon
UNLOCK
FLUSH
ENDIF
ENDIF
SELECT cel_data
SKIP
ENDDO
****** termina de grabar*******
VPRESUPEN=.F.
MESSAGEBOX("Se han autorizado los cargos seleccionados", 64,[MENSAJE])
**********************************************************************************************
Este codigo funciona pero al ser muchos los registros se hace lentisimo y pues no me sirve asi, necesito saber que esto haciendo mal o como puedo hacer para que se haga mas rapido.
Gracias de antemano
Saludos.
Gaby
Mexico.
bueno el codigo es este:
************************************************************************************************
**** de la tabla llamada cargo, que tienen el campo au=1 les agrego al campo aut tambien como 1******
SELECT cargo
GO top
DO while!EOF()
IF cargo.au=1
IF red([R], [cargo])
replace cargo.aut WITH 1
UNLOCK
FLUSH
ENDIF
ENDIF
skip
ENDDO
*********************************
******Ahora en la tabla cel_data tengo que poner un total el cual sale de la suma de varios campos de la tabla cargo*********
SELECT cel_data
SET ORDER TO cel_da01
GO top
DO while!EOF()
vfoliopx= cel_data.folio
SELECT cargo
SET ORDER TO folio
SEEK(vfoliopx)
IF FOUND()
SUM totort,tothon FOR cargo.folio= cel_data.folio AND cargo.aut=1;
TO vtotort,vtothon
SELECT cel_data
IF red("R","cel_data")
replace cel_data.cargo WITH Vtotort+Vtothon
UNLOCK
FLUSH
ENDIF
ENDIF
SELECT cel_data
SKIP
ENDDO
****** termina de grabar*******
VPRESUPEN=.F.
MESSAGEBOX("Se han autorizado los cargos seleccionados", 64,[MENSAJE])
**********************************************************************************************
Este codigo funciona pero al ser muchos los registros se hace lentisimo y pues no me sirve asi, necesito saber que esto haciendo mal o como puedo hacer para que se haga mas rapido.
Gracias de antemano
Saludos.
Gaby
Mexico.
Valora esta pregunta


0