Eliminar fichas de una tabla

vForum público de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
Avatar de Usuario
spereira
vAdviser
vAdviser
Mensajes: 630
Registrado: 19 Dic 2005, 19:25

Eliminar fichas de una tabla

Mensaje por spereira »

Tengo una discusion con un compañero que es la siguiente, a ver si me podeis dar la razon :P

Yo digo que el comando ELIMINAR FICHAS DE UNA TABLA pues que solo funciona en tablas en memoria y mi compañero lo ha hecho en una tabla en disco y le funciona correctamente.

Yo esta idea la tengo desde que una vez meti la pata en un proceso, y al principio me funcionaba pero un dia casco y la conclusión es que era por ese comando.

¿Hay alguien que la use de forma habitual en tablas en disco y le funcione correctamente?

Zenkiusss!!!!
Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23

Mensaje por Fran »

Buenos dias:

Funcionar funciona, pero no suelo utilizarlo por lo que pone en la ayuda:

Eliminar todas las fichas de la tabla
Función común de lista y de ficha.

Esta función elimina todas los registros de la tabla que se indique en sus parámetros. Es muy útil en aquellos casos en los que el cliente final debe importar gran cantidad de datos diariamente de una base de datos externa utilizando un tubo de importación con la opción No indexar y hacer Regen al final. Durante la ejecución de esta función el programa bloqueará la tabla objeto del borrado para que no se pueda trabajar con ella.

PARÁMETROS:

Identificador tabla:
Nombre de la tabla de la que desea borrar sus datos.

Identificador variable de retorno si/no:
Identificador de la variable local del proceso en la que se guardará el valor de si se han borrado los registros (1) o no (0).

Nota para la versión Cliente-Servidor: Esta función de procesos no genera transacción. Si en un proceso de un proyecto que va a ser ejecutado en la versión cliente-servidor se desea eliminar las fichas de una tabla deberá hacer lo siguiente:

Incluir antes de esta instrucción cualquier otra que implique escritura en disco (otra instrucción que genere transacción).

o sustituirla por lo siguiente:


Cargar lista -> TABLA_DE_DATOS

Recorrer lista eliminando fichas

Ej: Se ha creado una aplicación de Velázquez para una empresa que debe importar y exportar gran cantidad de datos diariamente. En vista a esto, el programador ha decidido utilizar un tubo de importación con la opción No indexar y hacer Regen al final activada. Esto supone un ahorro enorme en el tiempo de duración de la importación de datos desde la base de datos externa. Debido a que esta opción no comprueba la clave y no regenera los índices hasta el final de la importación, es preceptivo que la tabla de datos de destino (la interna de Velázquez) no tenga ningún registro. Para ello, antes de ejecutar la importación puede usar esta instrucción. Imagínese, que todos los días se han de realizar importaciones de una tabla externa a una tabla interna de CLIENTES. Entonces cree un proceso como el que sigue:

Eliminar todas las fichas de la tabla -> CLIENTES, bOK

if ‘bOK’

Tubo de importación -> ID_TUBO.

Autor: Velneo, S.A.

Para casos muy sencillos, como el de la ayuda, puede servir. Personalmente prefiero recorrer la lista eliminando.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586
Avatar de Usuario
spereira
vAdviser
vAdviser
Mensajes: 630
Registrado: 19 Dic 2005, 19:25

Mensaje por spereira »

No si la ayuda ya la leimos antes, lo que quiero saber es si alguien la esta usando y le funciona correctamente, el caso nuestro es bastante sencillo, ya que la tabla no tiene historicos ni nada.

La cuestion es que si borramos la tabla con recorrer lista quedan huecos y aumenta el tamaño de dicha tabla y se usamos el comando ELIMINAR FICHAS DE UNA TABLA pues borra toda la tabla sin dejar hueco alguno.

La opción que hemos optado por ahora es usar las dos :D recorrer para borrar la lista y ELIMINAR para quitar los huecos.

Pero bueno lo que me interesa es si alguien la usa habitualmente sin problema.
Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23

Mensaje por Fran »

Buenos dias:

Pues no, por lo que he dicho antes.

Pero la idea de borrar registros y eliminar huecos después es cojonuda...

En un entorno controlado (asegurarme de que no haya usuarios intentando escribir, etc) es muy útil... se me están ocurriendo varios sitios en los que implementarla.

Zenkius a ti!!!

P.D. Si realizas pruebas, cuentanos los resultados.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586
PuxaAlonso
vMate
vMate
Mensajes: 28
Registrado: 03 Feb 2006, 14:22

Mensaje por PuxaAlonso »

Buenos días,

Eliminar todas las fichas de una tabla no puedes utilizarlo en cliente/servidor porque para realizar esa función Velázquez bloquea la tabla en exclusividad algo que pueda entrar en un conflicto grave con el propio servidor ya que si la tabla está siendo utilizada podría ya estar bloqueada.

Comprobarlo es muy sencillo, en el mapa ejecuta en un proceso 2 veces seguidas eliminar todas las fichas de una tabla, debería quedarte bloqueado en ejecución, porque cuando intente ejecutarse la 2ª vez la tabla estará bloqueada por la primera instrucción.
Avatar de Usuario
jvila
vCool
vCool
Mensajes: 186
Registrado: 23 Sep 2005, 17:31

Eliminar Fichas

Mensaje por jvila »

Hola a todos:

A mi en alguna ocasión tb me ha dado problemas... mas bien de bloqueos. Lo solucioné con recorrer lista eliminando fichas

Un saludo
Francisco José Vila Martín

http://ayudavelneo.com
Avatar de Usuario
psuarez
vCool
vCool
Mensajes: 165
Registrado: 21 Sep 2005, 11:27

Mensaje por psuarez »

A mi me funciona correctamente. Yo hago un proceso de importación desde Oracle que se lanza desde una tarea en el servidor todas las noches y previo a dicho proceso elimino todas las fichas de las tablas involucradas. No utilizo recorrer la tabla eliminando fichas porque es mucho más lento, y porque no funciona si tienen históricos, salvo que se haga en el orden adecuado.

Saludos
Pedro Suárez

"Fiel al principio de Pareto"
Avatar de Usuario
spereira
vAdviser
vAdviser
Mensajes: 630
Registrado: 19 Dic 2005, 19:25

Mensaje por spereira »

PSUAREZ escribió:A mi me funciona correctamente. Yo hago un proceso de importación desde Oracle que se lanza desde una tarea en el servidor todas las noches y previo a dicho proceso elimino todas las fichas de las tablas involucradas. No utilizo recorrer la tabla eliminando fichas porque es mucho más lento, y porque no funciona si tienen históricos, salvo que se haga en el orden adecuado.

Saludos
Ok, esto es lo que queria oir :P nuestro proceso también se lanzara por la noche automaticamente, con lo cual el bloqueo me da igual.

Gracias a todos.
PuxaAlonso
vMate
vMate
Mensajes: 28
Registrado: 03 Feb 2006, 14:22

Mensaje por PuxaAlonso »

PSUAREZ escribió:A mi me funciona correctamente. Yo hago un proceso de importación desde Oracle que se lanza desde una tarea en el servidor todas las noches y previo a dicho proceso elimino todas las fichas de las tablas involucradas. No utilizo recorrer la tabla eliminando fichas porque es mucho más lento, y porque no funciona si tienen históricos, salvo que se haga en el orden adecuado.

Saludos
Te funciona porque al hacerlo por la noche el servidor que va liberando el bloqueo sobre las tablas al pasar cierto tiempo sin usarlas ya no la tiene bloqueada en exclusividad.

De todas formas ese es un punto de riesgo que tienes en la aplicación, yo no recomendaría su uso en Cliente/Servidor, aunque estamos de acuerdo que la función en sí tiene sus ventajas y usada de forma controlada como es tú caso, pero la fiabilidad desde mi punto de vista es primordial, así que recorro lista aunque sea un más lenta.

Sobre el tema de los huecos Velázquez reaprovecha los mismos, por lo que al volver a importar un nº similar de registros el tamaño de la tabla se mantiene.
Responder