Clipper/FiveWin - Problema al reemplazar datos

 
Vista:

Problema al reemplazar datos

Publicado por Antonio (55 intervenciones) el 17/11/2007 19:07:42
En el siguiente código pretendo reemplazar cAntiguo por cNuevo en todos los registros usando el índice del campo (N_OT) que contiene la información a reemplazar:
USE MovAlma NEW
SET INDEX TO MovAlma, MovAlmaA, MovAlmaB, MovAlmaC, MovAlmaD, MovAlmaE
GO TOP
SEEK cAntiguo
IF FOUND()
GO TOP
WHILE !EOF()
IF N_OT==cAntiguo
REPLA N_OT WITH cNuevo
ENDIF
SKIP
ENDDO
COMMIT
ENDIF
CLOSE INDEX
CLOSE DATABASES

Sin embargo solo reemplaza 1 de los 10 registros que existen con N_OT = cAntiguo. El índice esta bien, ya que al margen de haberlo borrado y creado de nuevo, he probado con código hacer:
SET FILTER TO N_OT=cAntiguo
COUNT TO nReg
? nReg //Resultado 10

Sin embargo si para reemplazar utilizo cualquier otro índice, incluso la propia base de datos con SET ORDER TO X, si reemplaza los 10 registros:
USE MovAlma NEW
SET INDEX TO MovAlma, MovAlmaA, MovAlmaB, MovAlmaC, MovAlmaD, MovAlmaE
GO TOP
SEEK cAntiguo
IF FOUND()
SET ORDER TO 0
GO TOP
WHILE !EOF()
IF N_OT==cAntiguo
REPLA N_OT WITH cNuevo
ENDIF
SKIP
ENDDO
COMMIT
ENDIF
CLOSE INDEX
CLOSE DATABASES

¿Alguien sabe porque solo me sustituye un registro de los diez que hay utilizando el índice del campo que contiene los diez registros que he de reemplazar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al reemplazar datos

Publicado por Adalberto Baqueros (213 intervenciones) el 18/11/2007 00:04:17
Hola Antonio,

Cuando necesito cambiar un campo clave procedo de la siguiente manera:

USE Datos
INDEX ON N_OT TO IndAlma
SEEK cAntiguo
WHILE ( ( cAntiguo == N_Ot ) .AND. !EOF() )
REPL N_OT WITH cNuevo
SEEK cAntiguo
ENDDO

En tu codigo:

GO TOP // ¿para que ir al principio si vas a realizar una busqueda?
SEEK cAntiguo // Buscas
IF FOUND() // encuentras
GO TOP // ¿para que vuelves al principio de los datos?
WHILE !EOF()
IF N_OT==cAntiguo
REPLA N_OT WITH cNuevo
ENDIF
SKIP
ENDDO
COMMIT
ENDIF
CLOSE INDEX
CLOSE DATABASES

Espero que te sirva. Saludos, desde Santa Cruz de la Sierra - Bolivia
:)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al reemplazar datos

Publicado por Antonio (55 intervenciones) el 18/11/2007 14:42:15
xAdalberto

Muchas gracias, la opción que me facilitas ha dado resultado.

Saludos cordiales.
Antonio Belando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar