Hola a todos! gracias por tomarse tiempo para leer mi pregunta. El problema que tengo es el siguiente:
Tengo un formulario MDI, cuyo evento FormClosing lleva adelante una rutina que hace copias de seguridad de unas bases de datos. Por lo general, realizar estas copias demora varios segundos. Para que el usuario no piense que es sistema se colgó, utilizo un pequeño formulario con un progressBar para que el usuario sepa que está sucediendo.
Mientras se realizan las copias de seguridad, el progressbar avanza perfectamente. El problema es que solamente aparece la barra de título y el progressbar, pero el label que explica que está sucediendo no aparece nunca.
el código del evento formClosing es el siguiente:
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'REALIZAR COPIAS DE SEGURIDAD
Dim destino As String
'Muestro el progressbar para mostrar el estado de la copia. progess.maximum = 9
frmProgresoBackup.ProgressBar1.Value = 0
frmProgresoBackup.Show()
frmProgresoBackup.ProgressBar1.Value += 1
'Creo el nombre de la carpeta donde se almacenarán las copias
destino = My.Settings.DestinoBackup & "\" & Now.Year & "." & Format(Now.Month, "0#") & "." & _
Format(Now.Day, "0#") & " - " & Format(Now.Hour, "0#") & "." & _
Format(Now.Minute, "0#")
frmProgresoBackup.ProgressBar1.Value += 1
'Verificar si existe el directorio de destino. Si no existe lo creo y
'copio IDB
If Not My.Computer.FileSystem.DirectoryExists(destino) Then
'Creo ruta de destino
My.Computer.FileSystem.CreateDirectory(destino)
'copiar IDB
Try
My.Computer.FileSystem.CopyFile(UbicaciónDB & "\IDB.mdb", destino & "\IDB.mdb")
Catch ex As Exception
End Try
frmProgresoBackup.ProgressBar1.Value += 2
'Recuperar últimas dos PDB
Dim dtPDB As New DataTable
Dim daPDB As New OleDbDataAdapter("SELECT TOP 2 anio, ruta FROM(PDB) ORDER BY anio DESC", conexionInformacion)
Try
daPDB.Fill(dtPDB)
Catch ex As Exception
MessageBox.Show("No se pudo copiar la base de datos ""IDB.mdb""." & _
"Por favor comuniquese con el administrador." & vbCrLf & vbCrLf & _
"Error producido: " & ex.Message, _
"Generando copias de seguridad", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Finally
CerrarConexion(conexionInformacion)
End Try
frmProgresoBackup.ProgressBar1.Value += 1
'copiar las últimas dos bases de datos PDB
For i = 0 To dtPDB.Rows.Count - 1
If My.Computer.FileSystem.FileExists(UbicaciónDB & "\" & dtPDB.Rows(i)(1) & ".mdb") Then
Try
My.Computer.FileSystem.CopyFile(UbicaciónDB & "\" & dtPDB.Rows(i)(1) & ".mdb", _
destino & "\" & dtPDB.Rows(i)(1) & ".mdb")
Catch ex As Exception
MessageBox.Show("No se pudo copiar la base de datos """ & dtPDB.Rows(i)(1) & ".mdb""." & _
"Por favor comuniquese con el administrador." & vbCrLf & vbCrLf & _
"Error producido: " & ex.Message, _
"Generando copias de seguridad", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
frmProgresoBackup.ProgressBar1.Value += 2
End If
Next
End If
'Cerrar progressBar
frmProgresoBackup.Close()
End Sub
Primero intenté instanciar el formulario frmProgresoBackup, pero si lo hacía de esa forma se veía aún peor.
Espero que puedan ayudarme. Se que es algo muy tonto, pero quiero que mi aplicación se vea bien. Desde ya gracias