FoxPro/Visual FoxPro - Borra registro de un tabla

   
Vista:

Borra registro de un tabla

Publicado por leonardo (7 intervenciones) el 16/02/2016 23:34:16
Buena tardes amigos tengo un problema con un tabla en visual fox pro, yo estoy utilizando el comando Delete for para borra los registros de un columna pero en este caso los registro son 012015 etc .. hast 542015 que son las semana y bueno yo lo estoy borrando por semana, no se si hay otra forma ya que yo estoy usando el siguiente comando :

select movimiento
delete for semana="012015"
pack
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

Borra registro de un tabla

Publicado por jose maria martin (1 intervención) el 17/02/2016 11:50:25
Hola,
No acabo de entender bien cual es el problema. ¿No te funciona esa forma de borrar? Explica un poco más.
Un saludo.
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

Borra registro de un tabla

Publicado por AUGUSTO LEONARDO (7 intervenciones) el 17/02/2016 17:08:01
Lo que pasa que quiero borra un tabla en la barra de comandos y en la web busque el comando Delete el cual cuando borro por ejemplo del años 2015 que son mas de 500 registros normal no tengo el problema.
el problema es otra bases de datos que esta por semana por ejemplo 012015, 022015 hasta 522015 y quiero borrar desde el 012015 hasta 522015 con el comando delete o sera otro comando . espero ahora me entiendas y muchas gracias por tu apoyo.
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
Imágen de perfil de JOsé Luis Plata Garrido

Borra registro de un tabla

Publicado por JOsé Luis Plata Garrido jlplatag@gmail.com (16 intervenciones) el 20/02/2016 03:04:39
Augusto, te comento otra forma para borrar registros para tu caso

Teniendo la tabla abierta y estando en el área de trabajo de la misma, escribe la siguiente línea en la ventana de comandos:

Delete all for substr(semana,3,4) = "2015"

Con esta instrucción, borraras lógicamente todos los registros que correspondan al año de 2015, para borrarlos definitivamente, debes abrir la tabla en forma exclusiva y ejecutar el comando PACK.

La función SUBSTR, considera una parte de una cadena de caracteres, es decir, en el ejemplo tu tabla en el campo semana, tiene registros con "012015", "022015", "032015", hasta "122015", al darle los parámetros de 2,4, le estamos indicando que considere la información de la cadena, contando de izquierda a derecha desde la posición 3 y hasta tres posiciones siguientes, que en el ejemplo es "2015".

Esperando que te sea de utilidad lo anterior, quedo a tus órdenes para cualquier ampliación al respecto.
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

Borra registro de un tabla

Publicado por leonardo (7 intervenciones) el 22/02/2016 14:50:40
muchas gracias por su apoyo me sirvió de mucho
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

Borra registro de un tabla

Publicado por Fidel José (321 intervenciones) el 17/02/2016 14:41:01
Fijate en el siguiente ejemplo:
Acá se crea una cursor de prueba llamado "MiSemana" y luego se procede a borrar registros de 2014 y 2015-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
LOCAL lcListYear,;
	lcYear,;
	i,;
	j
 
 
CREATE CURSOR MISEMANA ("SEMANA" C(6),"EVENTO" C(40))
 
lcListYear="2014,2015,2016"
FOR j= 1 TO GETWORDCOUNT(lcListYear,",")
	lcyear = GETWORDNUM(lcListYear,j,",")
	FOR I=1 TO 54
		INSERT INTO MISEMANA (SEMANA,EVENTO) ;
			VALUES (PADL(TRANSFORM(i),2,"0")+lcYear,"EVENTO "+TRANSFORM(i)+"/"+lcYear)
	NEXT
NEXT
GO top
BROWSE
 
*<Borrar 2014>
lcYearDelete = "2014"
DELETE FROM Misemana WHERE RIGHT(semana,4) = lcYearDelete
SELECT misemana
GO top
BROWSE
 
*<Borrar 2015>
lcYearDelete = "2015"
DELETE FROM Misemana WHERE RIGHT(semana,4) = lcYearDelete
SELECT misemana
GO top
BROWSE
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

Borra registro de un tabla

Publicado por Marco Mendinueta marco.mendinueta@gmail.com (6 intervenciones) el 17/02/2016 14:52:41
Lo que pasa es que VFP no borra directamente el registro sino que lo deja marcado para borrar y eso te permite que lo puedas recuperar. Para que puedas desaparecer el registro debes ejecutar el comando PACK y asi desaparece los registro. Espero te sirva.
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
Imágen de perfil de Eduardo Ureña

Borra registro de un tabla

Publicado por Eduardo Ureña (78 intervenciones) el 21/02/2016 04:39:33
Todo lo que recomiendan mis colegas es correcto. Lo único que quiero añadir es que para ejecutar el "pack" requiere que la tabla esté siendo utilizada en modo exclusivo.

Si hay otros usuarios accediendo la tabla el pack generaría un error. Te recomiendo uses el delete y activa SET DELETE ON para que se obvien los registros marcados para borrar y luego hacer un proceso utilitario para desalojar los registros borrados de la tabla, en donde advierta que nadie más debe estar en el sistema para ser ejecutado.
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

Borra registro de un tabla

Publicado por leonardo (7 intervenciones) el 22/02/2016 14:51:15
muchas gracias por su apoyo
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
Imágen de perfil de JOSE

Borra registro de un tabla

Publicado por JOSE (3 intervenciones) el 27/07/2016 19:47:02
Hola amigos aprovecho la oportunidad de meterme por medio en algo parecido a lo del tema de la eliminación definitiva de archivos yo estoy utilizando el comando deleted con opción lógica de recuperación , ,,, he visto como funciona el comando recal creo que lo he puesto bien espero perdonéis mis faltas , bueno continuo me recupera todo lo borrado pero a mi me gustaría me dijeseis como puedo recuperar solo lo ultimo q se borro , por ejemplo yo tengo una base telefónica de amigos , por ejemplo nombre, tlf , dirección , ecetera, ecetera , pues lo que me gustaría es apartir de la ultima si la he borrado por equivocación me gustaría recuperar ese registro completo , pero solo ese no todos por que entoces me sale todo lo antiguo y menudo lio , muchas gracias y creo que mas o menos me entendisteis , también se acepta cualquier forma de recuperación y u opciones de recuperación , soy novato en esto pero estoy intentando animarme ya hice mis pinitos jejejee


lo que estoy poniendo en el botón es esto

RECALL ALL

THISFORM.Refresh




también deciros que si tengo muchos conocimientos de electrónica es toda mi vida en lo que os pueda ayudar no dudar en decírmelo ...
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

Borra registro de un tabla

Publicado por Fidel José (321 intervenciones) el 28/07/2016 00:11:54
Para eso debes utilizar una estrategia de marcas cuando borras.
Por ejemplo pudes agregar un campo "ID_BORRADO" I, y le asignas un consecutivo cada vez que borras algo. A mi me resulta util un campo datetime para modificación y otro para borrado.
En cualquier caso, no utilizas RECALL ALL, sino algo así

1
2
3
4
5
6
SET DELETED OFF
SELECT (lcCursor)
SCAN FOR between(tmStamp , ldDateTime1 , ldDateTime2)
      RECALL
ENDSCAN
SET DELETED ON
Donde "tmStamp" es un campo Datetime con la fecha en que se borró (DELETE) y ldDateTime1 y ldDateTime2 son dos variables DateTime ingresadas por el usuario.

La estrategia que tienes que usar depende totalmente de lo que te interese recuperar y de la forma de borrar registros (en lote, por condición, de a uno), incluso, si tienes un identificador de grupos, puedes usarlo en reemplazo de las fechas o cosas por el estilo.

También puedes utilizar la sintaxis RECALL FOR (lCondicion) en lugar del SCAN / ENDSCAN.
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
Imágen de perfil de JOSE

Borra registro de un tabla

Publicado por JOSE (3 intervenciones) el 28/07/2016 13:29:26
Hola FIDEL . de nuevo, primero darte las gracias por contestarme tan rápido , ya veo que eres o soys unos plenos autodidactas en esta rama como yo en la mia , lo he entendido mas o menos , gracias por ponerme el ejemplo pero si no te importa me podrias hacer un ejemplo mas para novatos, pero mejor lo entendería con estas pistas que te voy a dar a si yo lo entenderé aun mejor .



,,,,,,,,,,,,, mira te pondré un ejemplo en ejecución como si estuviese ahora en la tabla supongamos q tengo una tabla con NOMBRE ,DIRECCION Y TELEFONO y que en nombre se llama JOSE EN DIRECION PONE , CALLE LA GRORIA Y EN TELEFONO

65854964 Y de pronto yo sin darme cuenta elimine esos datos , te pediría por favor un ejemplo de como los recuperarías de la manera mas fácil y sencilla si no te es molestia , de veras estoy muy ilusionado con esto y lo que estoy aprendiendo es por los videos q veo en yotube y ejercicios que he realizado de veras nadie me esta enseñando nada, me lo tengo que currar todo por lo que veo y por intuición , espero entiendas mi situación quizás alguna vez te paso a ti , por otra parte no me importaría pasarte mi código de agenda telefónica por simple curiosidad , bueno un saludo FIDEL y gracias .
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

Borra registro de un tabla

Publicado por Fidel José (321 intervenciones) el 28/07/2016 17:18:12
No sé si "telefono" es numérico o alpha, pero el código sigue igual de sencillo.
SET DELETED OFF
SELECT TABLA
LOCATE FOR TELEFONO = 65854964
IF FOUND()
RECALL
ENDIF
SET DELETED ON

Si el campo es caracter
SET DELETED OFF
SELECT TABLA
LOCATE FOR alltrim(TELEFONO)=="65854964"
IF FOUND()
RECALL
ENDIF
SET DELETED ON

o También
SET DELETED OFF
SCAN FOR TRIM(TELEFONO) == "65854964"
RECALL
ENDSCAN
SET DELETED ON
Pero nota que en este caso, si has borrado varios registros iguales, revivirá a todos los coincidentes.
Con LOCATE, solo revivirá el primero que encuentre.

Logicamente, tal vez necesites ingresar el número a recuperar en un cuadro de texto.
lcTelefono = alltrim(thisform.Txt_TelefonoRecuperar.Value)
SET DELETED OFF
SELECT TABLA
LOCATE FOR alltrim(TELEFONO)== lcTelefono
IF FOUND()
RECALL
ENDIF
SET DELETED ON

Si estás viendo esto en un control Grid, tienes que hacer un Refresh para el control grid
Thisform.grdTelef.REfresh
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
Imágen de perfil de JOSE

Borra registro de un tabla

Publicado por JOSE (3 intervenciones) el 28/07/2016 17:45:04
Hola de nuevo gracias por atenderme pues ahora voy entendiendo ya mas tiene muy buena pinta si es numérico , luego lo probare cuando salga del trabajo creare unas tablas de prueba y te comento si me funciono , espero que si , estoy impaciente por practicar


cuando lo termine lo pondré en una zona para que lo vean los demás en una parte del foro para que lo vean los demás siempre con tu nombre claro ya que tu me ayudastes , me da la impresión que no hay nada referente a la recuperación de datos perdidos , eso es algo parecido al viejo undelete , unformat o la recuperación de la papelera de Windows , un saludo y luego te comento ...
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
Imágen de perfil de JOSE

Borra registro de un tabla

Publicado por JOSE gerocire@hotmail.com (12 intervenciones) el 29/07/2016 13:51:41
Hola Fidel de nuevo como siempre darte las gracias una vez mas y decirte que continuare experimentando pero me he quedado con la opción del texbox osea la ultima jejejeej me ha funcionado a la PERFECION , mira te dejo este archivo adjunto de pequeña capacidad con otros pequeños problemas que espero puedas solucionar , supongo que para ti será pan comido jejeje pero para mi es toda una odisea eso si voy a tomar apuntes serios sobre esta leccion , un saludo ..
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