proceso para modificar información en una tabla

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
Responder
rhnapoles
Mensajes: 4
Registrado: Mar Jun 11, 2019 5:31 pm
Contactar:

proceso para modificar información en una tabla

Mensaje por rhnapoles » Mié Jun 12, 2019 1:56 pm

Buenos días:
disculpen algún experto que me pueda compartir algún proceso para modificar la información de 32000 registros.
La tabla donde se capturó la información errónea tiene 125000 registros en total,no quiero cometer un error y perder esa información desde hace 22 años.
En una tabla está el error de la captura errónea y en otra hace falta la captura de la misma cantidad de registros.
Espero que alguien pueda orientarme para corregir este problema de una manera segura y de manera automática sin la necesidad de hacer la captura y modificación registro por registro.

Muchas gracias
La versión de clarion es 9.0


HDMadeira
Al nivel de RZ
Mensajes: 279
Registrado: Dom Feb 06, 2011 10:02 pm
Ubicación: Trelew, Chubut, Argentina
Contactar:

Re: proceso para modificar información en una tabla

Mensaje por HDMadeira » Vie Jun 14, 2019 12:19 am

Hola, podrias dar mas detalles respecto al tipo de información errónea ? esta corrupta la tabla o se mezclaron registros ?

rhnapoles
Mensajes: 4
Registrado: Mar Jun 11, 2019 5:31 pm
Contactar:

Re: proceso para modificar información en una tabla

Mensaje por rhnapoles » Vie Jun 14, 2019 3:42 pm

Hola muchas gracias por contestar a mi pregunta.

La información no está corrupta el error fue que el usuario capturó información incorrecta y al ver el error ya no continuo con la captura.
Ahora la persona me pide un proceso para corregir la información incorrecta y además capturar de manera automática la información faltante.
La llave del archivo está compuesta por tres campos, los cuales son los siguientes
anio,numero,consecutivo
el error está en los registros del 2148 al 4851
la información debe quedar registrada como el siguiente ejemplo.
Anio numero consecutivo dependencia
2019 2148 1 62
2019 2148 2 267
2019 2148 3 91
2019 2148 4 25
2019 2148 5 13
2019 2148 6 163
2019 2148 7 470
2019 2148 8 104
2019 2148 9 537
2019 2149 1 62
2019 2149 2 267

Debe haber 9 consecutivos y 9 dependencias por cada numero.
Espero que me haya dado a entender.
Muchas gracias

HDMadeira
Al nivel de RZ
Mensajes: 279
Registrado: Dom Feb 06, 2011 10:02 pm
Ubicación: Trelew, Chubut, Argentina
Contactar:

Re: proceso para modificar información en una tabla

Mensaje por HDMadeira » Vie Jun 14, 2019 8:12 pm

la secuencia 62,267,291,etc es cíclica ?

rhnapoles
Mensajes: 4
Registrado: Mar Jun 11, 2019 5:31 pm
Contactar:

Re: proceso para modificar información en una tabla

Mensaje por rhnapoles » Vie Jun 14, 2019 8:41 pm

Si, es cíclica, 9 veces. estos códigos 62 267 91 25 13 163 470 104 537 están relacionados con otra tabla.
cuando llega al 537 de nueva cuenta empieza con el 62, consecutivo 1 y numero el que continua,
el único valor que no cambia es el anio 2019, todo este proceso se debe realizar hasta que el campo numero llegue a 4851.
gracias

HDMadeira
Al nivel de RZ
Mensajes: 279
Registrado: Dom Feb 06, 2011 10:02 pm
Ubicación: Trelew, Chubut, Argentina
Contactar:

Re: proceso para modificar información en una tabla

Mensaje por HDMadeira » Vie Jun 14, 2019 9:42 pm

Se me ocurre algo asi… suponiendo que solo se trata de "rectificar" el cuarto campo...
(Perdon por el poco respeto al arte de la programación )

loop numero= 2148 to 4851 by 1

loop secuencia=1 to 9 by 1

clear(tbl:record,-1)
tbl:anio=2019
tbl:numero=numero
tbl:secuencia=secuencia

get(tabla,key_tabla)
if error()='' then

!sI el registro existe le actualiza el ultimo campo

execute secuencia
tbl:campo=62
tbl:campo=267
tbl:campo=91
etc etc hasta 537
.
put(tabla)
cycle
else

!si no, crea el registro faltante
clear(tbl:record)
tbl:anio=2019
tbl:numero=numero
tbl:secuencia=secuencia

execute secuencia
tbl:campo=62
tbl:campo=267
tbl:campo=91
etc etc hasta 537
.
add(tabla)
cycle
.
.

rhnapoles
Mensajes: 4
Registrado: Mar Jun 11, 2019 5:31 pm
Contactar:

Re: proceso para modificar información en una tabla

Mensaje por rhnapoles » Sab Jun 15, 2019 10:01 pm

Muchas gracias tu valiosa ayuda y por el tiempo que utilizaste en realizar el proceso.
Solo tengo una duda ¿debo ponerlo en la parte de Takerecord procedure ?
ya lleva 45 minutos ejecutándose y lleva el 98%.

Encontré un manual de clarion 6.0 dentro del sitio y justo dónde viene la parte de procesos viene en blanco, es por eso que te molesto con tantas preguntas.
Gracias

HDMadeira
Al nivel de RZ
Mensajes: 279
Registrado: Dom Feb 06, 2011 10:02 pm
Ubicación: Trelew, Chubut, Argentina
Contactar:

Re: proceso para modificar información en una tabla

Mensaje por HDMadeira » Sab Jun 15, 2019 11:59 pm

Hola, yo colocaría eso dentro de un procedure tipo source
agregando en el other files la tabla en cuestión y habilitando la "opcion generate open close files" en las opciones (botón actions)

luego en el embed processed code colocas

do open_files

el código del post anterior

do close_files

podes ganar algo de velocidad cambiando el add(tabla) por append(tabla) y un build(tabla) antes del do close_files
también poniendo un stream(tabla) luego del do open_files y un flush(tabla) antes del build(tabla) o el do close_files


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados