Spanish Duda para que no se cuelgue mi aplicación mientras sincronizo con una base de datos

Vania Contreras

Member
Licensed User
Hola relativamente soy nuevo en B4A pero he venido trabajando en visual basic, pero aun no acabo de comprender la parte de los procesos en background, estoy generando una aplicación que dentro de una lan sincroniza una base de datos SQL server en una local en SQLite para poder portar la información y realizar una toma de inventarios en un almacén remoto fuera de las oficinas centrales. este proceso lo realizo sin problema, pero durante el tiempo que se esta sincronizando el usuario "desesperado" no sabe si esta o no realizando la sincronizacion, aun que yo se que si lo realiza, intente colocar un progressbar pero este nunca se visualiza, puesto que todo se sigue manteniendo en el hilo principal, leí que pudiera utilizar el Wait for pero cuando lo uso no entra al procedimiento donde realiza la copia, tienen alguna propuesta de como puedo realizarlo les anexo mi codigo



B4X:
Sub cmbSincronizar_Click
    ToastMessageShow("Comenzando importacion", False)

    pg.Visible=True 'pg es mi progressbar y no se muestra
    llenarArticulos
    pg.Visible=False
    Msgbox( "Cargado articulos, revisa en la barra de tareas cuando se haya completado","Sincronizando")
    
End Sub

Sub llenarArticulos
    Dim strquery As String
    
    Try
    ' Carga articulos
    a.OpenConnection1(ipServer, baseDatos, usuario, password)

            strquery ="SELECT * FROM siscom..articulos"
    
        db.ExecNonQuery("delete from articulos")
        Dim res As MSSQLResultSet = a.ExecuteQuery(strquery)
        Log("Busque los articulos")
        Do While res.MoveNext
                strquery = "insert into articulos values ('" & res.GetString2("id_compañia").Trim & "','" & res.GetString2("id_articulo").Trim &"','"  & res.GetString2("art_descripcion").Trim & "')"
                
            db.ExecNonQuery(strquery)

        Loop
            
        Log("Termine")
        res.Close
        a.CloseConnection
        
    
    Catch

'        bitacora(LastException, strquery)
        Log(LastException)
        End Try
End Sub
 
Top