ACCESS - Borrar Datos de una Tabla

Todos los días, Cargo un TXT en Access que se actualiza a Diario, pero este TXT trae información muy vieja, (fechas muy antiguas), y solo necesito la de los últimos 2 días. Es un Qery que genera el sistema a Diario.

La tabla que Carga se llama "Movimientos", y la columna donde esta la fecha se llama "FECHA TRANSACCION".

Es posible, que por medio de un Código, ¿se pueda borrar automáticamente lo diferente a las fechas que yo le pida cuando ejecute el proceso?

2 Respuestas

Respuesta
2

Javier: No distingo bien si Fecha Transaccion, está junta o separada. Para el Código supondré que está separada y la encerrare´entre corchetes.

Dim FiltroFecha As String, StrSQL As String
FiltroFecha = "[Fecha Transaccion] <=  # " & Format(DateAdd("d",-2,Date), "mm/dd/yyyy") & "#"
StrSQL = "DELETE * FROM Movimientos WHERE " & FiltroFecha
CurrentDB.Execute StrSQL, dbFailOnError
'El -2 son los días que tu quieras restar a la fecha Actual.
Con ese -2, te borrará todos los datos anteriores a "Antesdeayer"

Lo he ido escribiendo sobre la marcha pero creo que no me olvido nada, salvo que tu debes saber en que evento es el adecuado, y ante la duda, creas un Botón y le adjudicas ese código.

Mis saludos >> Jacinto

Gracias Icue, Pero me salta error de Sintaxis, adicional, cuando cargo el Txt, yo le había cambiado el formato a la columna donde venia la Fecha, ya que estaba en Texto (20160609), por medio de una consulta la Cambie, no se si por medio de un Código se pueda Cambiar?

Gracias Jacinto, Pero me salta error de Sintaxis, adicional, cuando cargo el Txt, yo le había cambiado el formato a la columna donde venia la Fecha, ya que estaba en Texto (20160609), por medio de una consulta la Cambie, no se si por medio de un Código se pueda Cambiar?

Javier: Si has convertido la Fecha, ignoro a qué se debe el error, si es posible haces una captura de pantalla y la pones aquí.

De otro lado si quieres convertir 20160609 en 09/06/2016 ya estáría bien el hacerlo con una Consulta de Actualización:

Si tienes un Campo que se llame FechaAlgo >> En la Fila Actualizar a...

= CFecha(Right([FechaAlgo], 2) & "/" & Mid([FechaAlgo], 5, 2) & "/" & Left([FechaAlgo], 4))

Mis saludos >> Jacinto

Respuesta
2

En código es más fácil. Supongamos que la tabla se llama Clientes, y entre Otros tiene un campo llamado FechaCompra. En cualquier evento, por ejemplo Al hacer clic de un botón de comando, entre Private Sub y End sub pon

DoCmd.SetWarnings False
DoCmd.RunSQL "delete * from clientes where fechacompra<[Escriba una fecha a partir de la cual se eliminarán los registros]"

Así cundo pulses el botón te preguntará a partir de que fecha quieres que elimine los registros. Se la escribes y catacroc.

También puedes poner una fecha fija

DoCmd.SetWarnings False
DoCmd.RunSQL "delete * from clientes where fecha<date-3"

Con lo cual cuando pulses el botón te eliminará los registros con mas de tres días de la fecha del sistema

Hay más formas, sólo habría que saber "cuando" los quieres eliminar.

Me había olvidado, también puedes poner

DoCmd.SetWarnings False
DoCmd.RunSQL "delete * from clientes where fecha between [escriba una fecha inicial] and [escriba una fecha final]"

Así, te dirá que escribas una fecha, la escribes, te dirá que escribas otra, lo haces y te borra los registros comprendidos entre esas dos fechas

Lo de docmd. Setwarnings es para que no te aparezca la dichosa ventanita de "va a eliminar...

Gracias Icue, Pero me salta error de Sintaxis, adicional, cuando cargo el Txt, yo le había cambiado el formato a la columna donde venia la Fecha, ya que estaba en Texto (20160609), por medio de una consulta la Cambie, no se si por medio de un Código se pueda Cambiar?

En la tabla crea un campo fecha, llamado por ejemplo Otra, con formato fecha corta y si quieres con mascara de entrada 00/00/0000;

En el formulario añade ese campo y en el evento Al recibir el enfoque crea un procedimiento de evento y entre Private Sub y End Sub escribe

Dim a As Long
a = CLng([fecha transaccion])
Otra = Right(a, 2) & "/" & Mid(a, 5, 2) & "/" & Left(a, 4)

Lo que estas haciendo es convertir la cadena de texto de fecha transacción en número y luego convertirlo en el formato fecha

Si fueran muchos registros los que tienes que convertir, puedes poner un botón de comando y en sus propiedades-eventos-al hacer clic, crea un procedimiento de evento y entre Private Sub y End Sub escribe

docmd.gotorecord,,acfirst

Dim a As Long
a = CLng([fecha transaccion])
Otra = Right(a, 2) & "/" & Mid(a, 5, 2) & "/" & Left(a, 4)

docmd.gotorecord,,acnext

next i

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas