Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

eliminar base de datos por fecha

Estas en el tema de eliminar base de datos por fecha en el foro de Visual Basic clásico en Foros del Web. hola, necesito urgentemente su ayuda amigos, van a decir que como molesto jeje, disculpen, es que necesito hacer que mi programa que me respalda la ...
  #1 (permalink)  
Antiguo 22/04/2008, 08:48
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
eliminar base de datos por fecha

hola, necesito urgentemente su ayuda amigos, van a decir que como molesto jeje, disculpen, es que necesito hacer que mi programa que me respalda la base de datos por dia, ahora que me elimine la base de datos de donde respaldo, x ejemplo, estoy metiendo respaldos desde el 01/04/2008, hasta el 04/04/2008, pero cuando llegue el 05/04/2008, que se borre automaticamente el del dia 01/04/2008, y asi sucesivamente, solo permitir que esten 4 bases de datos de respaldo, al llegar el dia en que vaya hacer la quinta que se me borre la de la mas fecha antigua.


no se si me explique.



gracias
  #2 (permalink)  
Antiguo 22/04/2008, 08:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Re: eliminar base de datos por fecha

Cita:
Iniciado por william_085 Ver Mensaje
hola, necesito urgentemente su ayuda amigos, van a decir que como molesto jeje, disculpen, es que necesito hacer que mi programa que me respalda la base de datos por dia, ahora que me elimine la base de datos de donde respaldo, x ejemplo, estoy metiendo respaldos desde el 01/04/2008, hasta el 04/04/2008, pero cuando llegue el 05/04/2008, que se borre automaticamente el del dia 01/04/2008, y asi sucesivamente, solo permitir que esten 4 bases de datos de respaldo, al llegar el dia en que vaya hacer la quinta que se me borre la de la mas fecha antigua.


no se si me explique.



gracias
Bueno, puedes colocar como nombre del archivo de respaldo, la fecha en que fue creada. Así simplemente cuando se crea la quinta borre el archivo que tiene como nombre la fecha de cinco días atrás.

P.S.: puedes borrar el archivo usando Kill...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 22/04/2008, 09:19
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: eliminar base de datos por fecha

ok, mira, cada base de datos que se crea por dia, se crea con su propia carpeta, por ejemplo la que se creo hoy la carpeta dice MARTES 22-04-08 y adentro contiene la base de datos del dia de hoy.


no entendi muy bien lo que me comentabas.
  #4 (permalink)  
Antiguo 22/04/2008, 09:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Re: eliminar base de datos por fecha

Cita:
Iniciado por william_085 Ver Mensaje
ok, mira, cada base de datos que se crea por dia, se crea con su propia carpeta, por ejemplo la que se creo hoy la carpeta dice MARTES 22-04-08 y adentro contiene la base de datos del dia de hoy.


no entendi muy bien lo que me comentabas.
Me refería a algo así:
Código:
 
Dim FolderName As String
FolderName = Format(DateSerial(Year(Date), Month(Date), Day(Date) - 5), "dd-mm-yyyy") 'Obtenemos el nombre de la carpeta de cinco días atrás...
Kill FolderName & "\*.*"
RmDir FolderName
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 22/04/2008, 09:43
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: eliminar base de datos por fecha

te agradesco david, eres grande jeje, gracias.

solo una duda mas, por ejemplo donde podria la ruta donde se encuentran las carpetas con las fechas?

otra cosa, para que me guarde la hora de respaldo y se ejecute hago esto:

If CDate(tiempo) = Data2.Recordset!respaldo Then
ObjFile.CopyFolder "C:\WINDOWS\Pollo Feliz\Pv Traslados\*", "p:\Pv Traslados\"
End If

en "p:\Pv Traslados\" se crean estas carpetas:

C:\WINDOWS\Pollo Feliz\Pv Traslados\Inventarios\nombre del dia dd_mm_yy\bd.mbd

C:\WINDOWS\Pollo Feliz\Pv Traslados\Tickets\nombre del dia dd_mm_yy\bd.mbd

dame un tip mas por favor para eliminar las 2 carpetas al mismo tiempo de la carpeta tickets e inventarios por la fecha como te habia comentado antes.

gracias y disculpa tanta molestia
  #6 (permalink)  
Antiguo 22/04/2008, 09:43
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: eliminar base de datos por fecha

Bueno, aquí tienes otra forma de eliminar todos los archivos de una carpeta con una antiguedad mayor de 5 días (se llamen como se llamen).

Código:
Dim FSO As Scripting.FileSystemObject
Dim SF As Scripting.File

Set FSO = New Scripting.FileSystemObject
For Each SF In FSO.GetFolder("c:\BackUps").Files
    If SF.DateCreated < Now - 5 Then Kill "c:\BackUps\" & SF.Name
Next

Nota: Tienes que agregar la referencia "Microsoft Scripting Runtime"

Un saludo.
  #7 (permalink)  
Antiguo 22/04/2008, 09:57
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: eliminar base de datos por fecha

gracias amigo, entonces yo lo podria hacer asi:


Dim FSO As Scripting.FileSystemObject
Dim SF As Scripting.File

Set FSO = New Scripting.FileSystemObject
For Each SF In FSO.GetFolder("C:\WINDOWS\Pollo Feliz\Pv Traslados\Inventarios\").Files
If SF.DateCreated < Now - 5 Then Kill "C:\WINDOWS\Pollo Feliz\Pv Traslados\Inventarios\" & SF.Name
Next

despues dentro de la carpeta inventarios me va a borrar solo la carpeta mas antigua a 5 dias verdad, no vaya hacer la de malas y me vaya a borrar todas las carpetas jeje.

para que tambien me elimine las de:

C:\WINDOWS\Pollo Feliz\Pv Traslados\tickets\

necesito crear todo esto de nuevo

Dim SF As Scripting.File

Set FSO = New Scripting.FileSystemObject
For Each SF In FSO.GetFolder("C:\WINDOWS\Pollo Feliz\Pv Traslados\tickets\").Files
If SF.DateCreated < Now - 5 Then Kill "C:\WINDOWS\Pollo Feliz\Pv Traslados\tickets\" & SF.Name
Next


gracias
  #8 (permalink)  
Antiguo 22/04/2008, 10:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Re: eliminar base de datos por fecha

Para que no tengas que copiar el código dos veces, puedes hacer así:
Código:
 
Sub DeleteBackup(ByVal Path As String)
Dim SF As Scripting.File
 
Set FSO = New Scripting.FileSystemObject
For Each SF In FSO.GetFolder(Path).Files
If SF.DateCreated < Now - 5 Then Kill Path & SF.Name
Next
End Sub
Código:
 
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\tickets\"
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\Inventarios\"
Muy buen aporte, Avellaneda.

No obstante, william_085, para que te funcione, no deben ser carpetas tus copias de respaldo, sino archivos...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 22/04/2008, 10:15
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: eliminar base de datos por fecha

Cita:
Iniciado por william_085 Ver Mensaje
despues dentro de la carpeta inventarios me va a borrar solo la carpeta mas antigua a 5 dias verdad, no vaya hacer la de malas y me vaya a borrar todas las carpetas jeje.
Para asegurarte copia todos los archivos en una nueva carpeta y haz la prueba.

Un saludo
  #10 (permalink)  
Antiguo 22/04/2008, 10:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Re: eliminar base de datos por fecha

Yo propongo esta solución:
Código:
 
Sub DeleteBackup(ByVal Path As String)
On Error Resume Next
Dim SF As Scripting.File
Dim FSO As Object
Set FSO = New Scripting.FileSystemObject
Dim FolderName As String
FolderName = Dir(Path & "*.*", vbDirectory)
Do
    If FolderName = "" Then Exit Do
    If GetAttr(Path & FolderName) = vbDirectory And FolderName <> "." And FolderName <> ".." Then
        If FSO.GetFolder(Path & FolderName).DateCreated < Now - 4 Then
            Kill Path & FolderName & "\*.*"
            RmDir Path & FolderName
        End If
    End If
    FolderName = Dir
Loop
End Sub
Código:
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\tickets\"
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\Inventarios\"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 22/04/2008, 10:34
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: eliminar base de datos por fecha

Cita:
Iniciado por David el Grande Ver Mensaje
Yo propongo esta solución:
Código:
 
Sub DeleteBackup(ByVal Path As String)
On Error Resume Next
Dim SF As Scripting.File
Dim FSO As Object
Set FSO = New Scripting.FileSystemObject
Dim FolderName As String
FolderName = Dir(Path & "*.*", vbDirectory)
Do
    If FolderName = "" Then Exit Do
    If GetAttr(Path & FolderName) = vbDirectory And FolderName <> "." And FolderName <> ".." Then
        If FSO.GetFolder(Path & FolderName).DateCreated < Now - 4 Then
            Kill Path & FolderName & "\*.*"
            RmDir Path & FolderName
        End If
    End If
    FolderName = Dir
Loop
End Sub
muchas gracias

este codigo

Código:
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\tickets\"
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\Inventarios\"
donde lo colocaria, y la solucion que tu das david, si me va a eliminar las puras carpetas que necesito que realmete me elimine.??

avellaneda, fijate que yo tambien lo queria hacer asi de en una sola carpeta estuviera todos los respaldos de las bd pero asi me lo pidieron, que a cada respaldo se le creara una carpeta con el nombre del dia y con la fecha
  #12 (permalink)  
Antiguo 22/04/2008, 10:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Re: eliminar base de datos por fecha

Sí, el código que te puse servirá para eliminar las carpetas que tengas 5 días o más de antigüedad. (Aclaro que solo hice una adaptación del código que originalmente publicó Avellaneda).

El DeleteBackup debes colocar en el lugar donde necesites que se eliminen las copias de respaldo antiguas. Puedes colocarla junto con el código que utilizas para generar una nueva copia de respaldo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 22/04/2008, 11:18
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: eliminar base de datos por fecha

puse eso aqui en esta parte de mi codigo.

If CDate(tiempo) = Data2.Recordset!respaldo Then
ObjFile.CopyFolder "C:\WINDOWS\Pollo Feliz\Pv Traslados\*", "c:\Pv Traslados\"
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\tickets\"
DeleteBackup "C:\WINDOWS\Pollo Feliz\Pv Traslados\Inventarios\"
End If

pero no quiso eliminar

aqui se ejecuta dependiendo la hora del respaldo, el respaldo si me lo hace pero no elimina, tal ves sea por que genere carpetas con fecha adelantada ? o sea modifique la fecha de mi computadora para que se generaran las carpetas a conforme a la fecha, sera por eso?
  #14 (permalink)  
Antiguo 22/04/2008, 12:01
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: eliminar base de datos por fecha

ya me borra se los agradesco muchisimo, fueron de mucha ayuda, son unos masters.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:54.