Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: taliban en 06 de Abril 2014, 17:00
-
hola he creado un ToolStripMenu con un savefiledialog para cuando abras busques la base de datos clientes.sdf la selecciones y busques una ubicacion fuera del directorio donde se instalo para hacer click en el boton guardar y guardarla , bien todo va bien , el problema es que cuando guarda la base de datos le das a propiedades en el archivo guardado y pone que ocupa 0 bytes.
Private Sub CopiaDeSeguridadToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles CopiaDeSeguridadToolStripMenuItem.Click
Dim mystream As Stream
Dim abrir As SaveFileDialog
abrir = New SaveFileDialog
abrir.InitialDirectory = "c:\dos"
abrir.RestoreDirectory = True
abrir.Title = "Selecciona la base de datos Clientes.sdf "
If abrir.ShowDialog() = Windows.Forms.DialogResult.OK Then
mystream = abrir.OpenFile
If (mystream IsNot Nothing) Then
mystream.Close()
End If
End If
End Sub
-
Aquí tienes un ejemplo de cómo puedes seleccionar en primer lugar el archivo del que desees crear el backup, y luego el directorio donde quieras guardar el backup, de modo que el archivo seleccionado se copia en el directorio indicado con un nuevo nombre:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ruta1 As String
'Elegir el fichero del que queremos crear el backup
Dim openFileDialog1 As New OpenFileDialog()
openFileDialog1.Filter = "Base de datos sdf |*.sdf| Fichero de texto |*.txt"
openFileDialog1.Title = "Seleccionar fichero para crear backup"
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
ruta1 = openFileDialog1.FileName
MessageBox.Show("Fichero seleccionado: " & ruta1 & vbCrLf & vbCrLf & "Elija a continuación la ruta donde se creará el backup." & vbCrLf)
End If
'Fin elegir fichero del que queremos crear el backup
Dim ruta2 As String
'Elegir directorio donde se creará el backup
Dim folderBrowserDialog1 As New FolderBrowserDialog()
folderBrowserDialog1.Description = "Seleccionar directorio para crear backup"
If folderBrowserDialog1.ShowDialog() = DialogResult.OK Then
ruta2 = folderBrowserDialog1.SelectedPath
MessageBox.Show("Ruta del directorio donde se creará el backup: " & ruta2 & vbCrLf & vbCrLf & "A continuación se creará el backup y podrá acceder a él desde el sistema de archivos." & vbCrLf)
End If
Dim fullPath As String
Select Case openFileDialog1.FilterIndex
Case 1
fullPath = My.Computer.FileSystem.CombinePath(ruta2, "backup.sdf")
MsgBox("Ruta de guardado:" & fullPath)
Case 2
fullPath = My.Computer.FileSystem.CombinePath(ruta2, "backup.txt")
MsgBox("Ruta de guardado:" & fullPath)
End Select
My.Computer.FileSystem.CopyFile(ruta1, fullPath)
End Sub
End Class
De esta manera debería generarte una copia sin problemas (en teoría).
-
correcto , muchas gracias, funciona perfectamente
-
hola , cuando creas la copia de seguridad la copia sin problemas en el directorio que elijas pero el problema es cuando decides hacer otra copia, si en la carpeta donde hiciste la ultima copia sigue estando hay ,te salta un error ,si tu antes de hacer la copia borras la antigua , te la copia sin ningun problema , como consigo que me borre la antigua para grabar la copia nueva ?
gracias
-
Puedes hacerlo comprobando si el fichero de backup existe con If (My.Computer.FileSystem.FileExists(fullPath)) Then...
En caso de que exista, damos opción a reemplazar o cancelar, y en caso de que no exista proceder. Según elija el usuario borraremos el fichero anterior y pondremos el nuevo, o cancelaremos la operación. Modificado:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ruta1 As String
Dim respuestaUsuario As String
'Elegir el fichero del que queremos crear el backup
Dim openFileDialog1 As New OpenFileDialog()
openFileDialog1.Filter = "Base de datos sdf |*.sdf| Fichero de texto |*.txt"
openFileDialog1.Title = "Seleccionar fichero para crear backup"
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
ruta1 = openFileDialog1.FileName
MessageBox.Show("Fichero seleccionado: " & ruta1 & vbCrLf & vbCrLf & "Elija a continuación la ruta donde se creará el backup." & vbCrLf)
End If
'Fin elegir fichero del que queremos crear el backup
Dim ruta2 As String
'Elegir directorio donde se creará el backup
Dim folderBrowserDialog1 As New FolderBrowserDialog()
folderBrowserDialog1.Description = "Seleccionar directorio para crear backup"
If folderBrowserDialog1.ShowDialog() = DialogResult.OK Then
ruta2 = folderBrowserDialog1.SelectedPath
MessageBox.Show("Ruta del directorio donde se creará el backup: " & ruta2 & vbCrLf & vbCrLf & "A continuación se creará el backup y podrá acceder a él desde el sistema de archivos." & vbCrLf)
End If
Dim fullPath As String
Select Case openFileDialog1.FilterIndex
Case 1
fullPath = My.Computer.FileSystem.CombinePath(ruta2, "backup.sdf")
MsgBox("Ruta de guardado:" & fullPath)
Case 2
fullPath = My.Computer.FileSystem.CombinePath(ruta2, "backup.txt")
MsgBox("Ruta de guardado:" & fullPath)
End Select
If (My.Computer.FileSystem.FileExists(fullPath)) Then
respuestaUsuario = MsgBox("El archivo ya existe ¿Desea reemplazarlo?", MsgBoxStyle.OkCancel)
MsgBox("Respuesta del usuario: " & respuestaUsuario)
If respuestaUsuario = 1 Then
MsgBox("Respondió reemplazar")
My.Computer.FileSystem.DeleteFile(fullPath)
My.Computer.FileSystem.CopyFile(ruta1, fullPath)
Else
MsgBox("Canceló")
End If
Else
My.Computer.FileSystem.CopyFile(ruta1, fullPath)
End If
End Sub
End Class
-
perfecto no me salia lo de
If (My.Computer.FileSystem.FileExists(fullPath))
gracias