Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Como le aplico progressbar a mi funcion?

Estas en el tema de Como le aplico progressbar a mi funcion? en el foro de Visual Basic clásico en Foros del Web. El codigo es asi Código: Private Sub cmdBackup_Click() On Error GoTo ErrorBackup 'Cerramos la conexion 'If dbConex.State = 1 Then dbConex.Close 'Esta linea cierra la ...
  #1 (permalink)  
Antiguo 02/10/2008, 10:58
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 2 meses
Puntos: 10
Como le aplico progressbar a mi funcion?

El codigo es asi
Código:
Private Sub cmdBackup_Click()
On Error GoTo ErrorBackup
   'Cerramos la conexion
     'If dbConex.State = 1 Then dbConex.Close 'Esta linea cierra la conexion del modulo
     'Copiamos la base de datos en la carpeta backup
     Screen.MousePointer = 1
     MsgBox CopiaBDPwd(App.Path & "\SYSTEM_DB_01.mdb", App.Path & "\BackUp\Copia de SYSTEM_DB_01.mdb", 45568392), vbInformation, "Information"
     'Volvemos a abrir la conexion
     'Main 'Esta linea vuelve a abrir la conexion del modulo
Exit Sub

ErrorBackup:
   MsgBox "No se pudo crear la copia de seguridad", vbCritical, "Debe cerrar todas las ventanas"
End Sub
  #2 (permalink)  
Antiguo 02/10/2008, 11:03
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 18 años, 11 meses
Puntos: 839
Respuesta: Como le aplico progressbar a mi funcion?

Depende mucho, al parecer la función que realiza la acción principal es CopiaBDPwd por lo que en esa función deberías implementar el código que vaya actualizando la barra de progreso, no sé qué tiene esa función, si un bucle, o tan solo copia el archivo, habría que revisarlo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 02/10/2008, 11:17
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: Como le aplico progressbar a mi funcion?

Bueno la funcion va asi, como podria aplicarle progressbar?
Código:
Public Function CopiaBDPwd(sOrigen As String, sDestino As String, sPwd As String) As String
    ' Base de datos con contraseña
    ' marcar referencia: Microsof Jet and Replication objects 2.6 Library
    Dim je As JRO.JetEngine
    Set je = New JRO.JetEngine
    
    If Len(Dir$(sDestino)) Then Kill sDestino
    je.CompactDatabase "Data Source=" & sOrigen & ";" & _
        "Jet OLEDB:Database Password=" & sPwd, _
        "Data Source=" & sDestino & ";" & _
        "Jet OLEDB:Database Password=" & sPwd
    
    CopiaBDPwd = "El proceso se completo satisfactoriamente en '" & sDestino & "'."
End Function
  #4 (permalink)  
Antiguo 02/10/2008, 11:26
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Como le aplico progressbar a mi funcion?

Cita:
Iniciado por franko1809 Ver Mensaje
El codigo es asi
Código:
Private Sub cmdBackup_Click()
On Error GoTo ErrorBackup
   'Cerramos la conexion
     'If dbConex.State = 1 Then dbConex.Close 'Esta linea cierra la conexion del modulo
     'Copiamos la base de datos en la carpeta backup
     Screen.MousePointer = 1
     MsgBox CopiaBDPwd(App.Path & "\SYSTEM_DB_01.mdb", App.Path & "\BackUp\Copia de SYSTEM_DB_01.mdb", 45568392), vbInformation, "Information"
     'Volvemos a abrir la conexion
     'Main 'Esta linea vuelve a abrir la conexion del modulo
Exit Sub

ErrorBackup:
   MsgBox "No se pudo crear la copia de seguridad", vbCritical, "Debe cerrar todas las ventanas"
End Sub
Hola,
para poder aplicar el control ProgressBar a un proceso, necesitas saber el número de elementos que se van a procesar (p.e. en un bucle For o en la lectura de un recordset), pero en un Copy nunca sabes lo que va a tardar, pues entre otras cosas, depende de la velocidad de la máquina donde se ejecute.

Si el archivo a copiar no es excesivamente grande, con que le pongas el reloj de arena es suficiente (por cierto, que no es el MousePointer 1, sino el 11, el 1 es la flecha, constante = vbArrow y el 11 es el reloj de arena = vbHourGlass) y si va a sobrepasar un tiempo de espera considerable, lo puedes hacer con la API SHFileOperation en la que aparece la típica ventana de Copiando... Quedan xx segundos"

Ah! y si utilizas la primera opción, no olvides volver a poner el puntero del mouse a su valor original. Screen.MousePointer = vbDefault

  #5 (permalink)  
Antiguo 02/10/2008, 11:33
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: Como le aplico progressbar a mi funcion?

Cita:
Iniciado por Avellaneda Ver Mensaje

si va a sobrepasar un tiempo de espera considerable, lo puedes hacer con la API SHFileOperation en la que aparece la típica ventana de Copiando... Quedan xx segundos"

Parece que tendre que utilizar la api, ahora la bd no pesa mucho pero con el tiempo pesara mas, gracias por la info jeje era 11 en vez 1 como la bd se copia rapido no me daba cuenta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:42.