Inconvenientes Con Particion No Automontada


Subject: 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

Last edited by v3ctor on Saturday, 02 May 2015, 13:32; edited 2 times in total
Subject: 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.

Subject: 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....

Last edited by v3ctor on Saturday, 02 May 2015, 19:35; edited 1 time in total
Subject: 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...

Profile PM  

Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1345s (PHP: 1% SQL: 99%)
SQL queries: 25 - Debug Off - GZIP Enabled