none
Problemas para visualizar un formulario RRS feed

  • Pregunta

  • 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

    miércoles, 17 de febrero de 2010 23:16

Todas las respuestas

  • hola

    un primer punto a remarcar, es que no veo muy bueno hacer una copia de seguridad en ese evento
    o sea se cierra el form y estas realziando una operacion que segun veo demora

    lo segundo es que no veo que estes en el codigo asihnando el texto a ningun label
    o al menos no puedo ver que estas asignando contenido a un label en ese seccion de codigo

    si veo que incrementeas y accedes al progressbar
    pero no identifico ningin label con la asigmacion de alguna leyenda para mostrar


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 18 de febrero de 2010 4:07
  • Gracias por responder Tutti. Si no es en el evento formClosing, entonces ¿En que evento sería conveniente colocar ese código?

    Con respecto al label, este ya se encuentra en el formulario frmProgresoBackup, está insertado en tiempo de diseño. Es un label estatico que simplemente informa al usuario que se están realizando la copias de seguridad.

    Saludos

    Leo
    jueves, 18 de febrero de 2010 4:11