Ordenar la tabla por fecha , eliminar los datos de campo id y renumerar los datos de este campo id.

<div class="MessageTextContainer"><div id="freqdescription" class="MessageText description">

Tengo una tabla llamada libcompras con los siguientes campos : id,fecha,tipo,numfact. Requiero ordenar la tabla por fecha , eliminar los datos de campo id y renumerar los datos de este campo id.

Lo hice creando una form, dentro de la form cree un botón y en el evento click le puse este código:

#DEFINE MSJ2_LOC "Proceso Terminado.... "
#DEFINE MSJ3_LOC "Organizando id.... "
WAIT WINDOWS MSJ3_LOC at 15,40 TIMEOUT (3)
LOCAL secu
secu = 0
SELECT libcompras
*set filter to nombre= nom_cli
GO top
SCAN
secu = secu + 1
replace libcompras.id WITH secu
ENDSCAN
WAIT WINDOWS MSJ2_LOC at 15,40 TIMEOUT (3)

gracias de antemano

</div></div>

1 Respuesta

Respuesta
1

Podrías hacer una consulta con los campos que indicas y un "ID" vacío en un cursor editable, luego solo haces una actualizción por medio del numero de registro:

Algo así:

select 0 as id2,fecha,tipo,numfact ;

from libcompras;

order by fecha;

into cursor Resultado READWRITE

*luego actualizas los ID

update Resultado;

set id2 = recno()

Cesar tal vez no me supe explicar.

Los datos de mi tabla libcompras están así:

id fecha tipo numFact

1 10/08/13 FN 7975

2 10/08/13 FN 8073

3 10/23/13 FN 56639

4 10/23/13 FN 7489

5 10/05/13 FN 11848

6 10/05/13 FN 0422

Al correrle los códigos debería quedar así:

1 10/05/13 FN 0422

2 10/05/13 FN 11848

3 10/08/13 FN 7975

4 10/0813 FN 8073

5 10/23/13 FN 7489

6 10/2313 FN 56639.

Es decir, ordena por fecha y luego reasigna la numeración en orden ascendente.

No se si me explico.

Muchas Gracias Cesar.

Entonces completale con lo que te pasé actualizar el ID a partir del ID2:

select 0 as id2,fecha,tipo,id,numfact ;
from libcompras;
order by fecha;
into cursor Resultado READWRITE

*luego actualizas los ID
update Resultado;
set id2 = recno()

*actualizas en el origen:

SELECT Resultado

SCAN

update libcompras;

set id = Resultado.ID2;

where Id = Resultado.ID;

and NumFact = Resultado.NumFact

ENDSCAN

*La condiciion doble es para evitar que se pongan 2 veces el ID cuando se cambie alguno.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas