Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Inconvenientes Con Particion No Automontada
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Inconvenientes Con Particion No Automontada 
 
buenas, este código respalda una base de datos (al abrir el programa de forma automática) si la fecha tiene mas de un día o semana de diferencia con la ultima fecha de modificación de la base de datos
en un lugar a elección del usuario.
pero si el usuario elige una carpeta que no se automonta en el sistema (tengo muchas particiones y discos en mi pc) da error aunque no se cuelga el programa porque le puse código para ello.

ahora bien, al parecer parece lógico que es uno que tiene que montar la carpeta si no esta montada, que es lo que voy a intentar hacer para solucionar el tema.

como manejarían ese tema ustedes?

Public Sub RespaldarAhora()
  Dim FechaM As Date
  Dim BD As String
  
  DirRespaldo = Settings["RespaldoAutomatico/DirRespaldo", RespaldoBD]
  CadaTanto = Settings["RespaldoAutomatico/Periodo", 0]
    
  BD = FMain.CarpetaTaller &/ "basetaller"
  If Exist(BD) Then
    FechaM = Stat(BD).LastModified
  Endif

  ArchivoX = FMain.DirRespaldo &/ "basetaller_" & Replace$(CString(Date), "/", "-")
  
  Select Case CadaTanto
    Case 0
       If DateDiff(Date, FechaM, gb.Day) <= 0 Then
          If Exist(ArchivoX) = False Then
             If Access(File.Dir(ArchivoX), gb.Write) = True Then
                Copy BD To ArchivoX
                Wait 0.2
                VerificarRespaldo
             Else
                TextoMSG("Error:" & Error.Text & gb.NewLine & Error.Where, True)
             Endif
          Else
             If bVerMensaje = True Then
               TextoMSG("Respaldo ya existe:" & gb.NewLine & ArchivoX, True)
               bVerMensaje = False
             Endif
          Endif
       Endif
    Case 1
       If DateDiff(Date, FechaM, gb.Day) < 6 Then
          If Exist(ArchivoX) = False Then
             If Access(File.Dir(ArchivoX), gb.Write) = True Then
                Copy BD To ArchivoX
                Wait 0.2
                VerificarRespaldo
             Else
                TextoMSG("No se pudo acceder a:" & gb.NewLine & ArchivoX, True)
             Endif
          Else
             If bVerMensaje = True Then
               TextoMSG("Respaldo ya existe:" & gb.NewLine & ArchivoX, True)
               bVerMensaje = False
             Endif
          Endif
       Endif
  
  End Select
  
End

Public Sub VerificarRespaldo()
  If Exist(ArchivoX) Then
    Goto RESPALDO_CORRECTO
  Else
    Goto ERROR_RESPALDO
  Endif
            
  RESPALDO_CORRECTO:
    TextoMSG("Se respaldo correctamente en:" & gb.NewLine & ArchivoX, False)
'     Message.Info("Se respaldo correctamente en:" & gb.NewLine & ArchivoX)
    Goto SALIR
    
  ERROR_RESPALDO:
    TextoMSG("Ocurrio un error:" & gb.NewLine & Error.Text & gb.NewLine & Error.Where, True)
  
  SALIR:
  
End

 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Sabado, 02 May 2015, 14:32; editado 2 veces 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Inconvenientes Con Particion No Automontada 
 
V3ctor:

Citar:
si el usuario elige una carpeta que no se automonta en el sistema (tengo muchas particiones y discos en mi pc) da error aunque no se cuelga el programa porque le puse código para ello.


Que muestre un mensaje de error y que le diga al usuario que debe de montar la unidad/particion...


Public Sub VerificarRespaldo()
  If Exist(ArchivoX) Then
    Goto RESPALDO_CORRECTO
  Else
    Goto ERROR_RESPALDO
  Endif
            
  RESPALDO_CORRECTO:
    TextoMSG("Se respaldo correctamente en:" & gb.NewLine & ArchivoX, False)
'     Message.Info("Se respaldo correctamente en:" & gb.NewLine & ArchivoX)
    Goto SALIR
    
  ERROR_RESPALDO:
    TextoMSG("Ocurrio un error:" & gb.NewLine & Error.Text & gb.NewLine & Error.Where, True)
  
  SALIR:
  
End


Me han dolido los ojos, cuando he visto este código.... se puede hacer sin usar ningún goto.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Inconvenientes Con Particion No Automontada 
 
jsbsan escribió: [Ver mensaje]

Me han dolido los ojos, cuando he visto este código....


bueno estem.....   soy un programador en fase superbeta  


el tema entonces seria como detectar si el error es porque no esta montada la carpeta....
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Sabado, 02 May 2015, 20:35; editado 1 vez 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Inconvenientes Con Particion No Automontada 
 
Citar:
como detectar si el error es porque no esta montada la carpeta....

No se montan carpetas, se montan particiones sobre carpetas. Esto es importante, porque la carpeta debe existir para poder montar en ella una unidad.
Lo más simple es: Coloca un flag, es decir un fichero testimonio, en la carpeta de las copias. Por ejemplo montado.txt, da igual si está vacío.
Luego pregunta por el:

DirRespaldo = Settings["RespaldoAutomatico/DirRespaldo", RespaldoBD]
if not exist(DirResaldo &/ "montado.txt") then
    message("no has montado la carpeta")
    return
endif



Public Sub VerificarRespaldo()
If Exist(ArchivoX) Then
    TextoMSG("Se respaldo correctamente en:" & gb.NewLine & ArchivoX, False)
Else
    TextoMSG("Ocurrio un error:" & gb.NewLine & Error.Text & gb.NewLine & Error.Where, True)
Endif

End


Bendita simpleza...
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Inconvenientes Con Focos De Ventanas v3ctor General 4 Sabado, 26 Abril 2014, 02:46 Ver último mensaje
v3ctor
No hay nuevos mensajes Inconvenientes Para Borrar Textarea Con Ev... v3ctor General 2 Viernes, 19 Diciembre 2014, 10:06 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario