HttpJob - WebService Sincrono

Discussion in 'Portuguese Forum' started by STIV RAEL GIACON, Oct 17, 2018.

  1. STIV RAEL GIACON

    STIV RAEL GIACON Member Licensed User

    Ola bom dia a todos

    Estous fazendo uma aplicação que vai baixar via webservice os dados de um banco remoto para um banco de dados local no celular.

    Estou lançando o Job para fazer essa inclusão porem gostaria de esperar o primeiro Job terminar para depois iniciar o próximo. Isso é possível? O seja eu gostaria que a App ficasse parada terminando o primeiro trabalho para depois continuar para os próximos. Ou então uma forma de parar até que todos os trabalhos sejam concluídos.

    Code:
    Sub atualizarTabelasApoio(bForce As Boolean)
        
    Dim rec As List
        rec.Initialize
        
        DBUtils.SQL.BeginTransaction
        
    Try
            
    ProgressDialogShow2("Sincronizando tabelas com a nuvem..."False )
            
    If bForce Then
                DBUtils.SQL.ExecNonQuery( 
    "DELETE FROM Deposito" )
                DBUtils.SQL.ExecNonQuery( 
    "DELETE FROM Empresa" )
            
    End If
            
            
    ' verifica se a tabela de deposito tem registro
            rec = DBUtils.ExecuteMemoryTable(DBUtils.SQL, "SELECT ID FROM Deposito",  Null0)
            
            
    Log("Rec Deposito local: " & rec.Size )
            
    If rec.Size = 0 Then
               sincronizeTabela( SINCRONIZE_DEPOSITO  )
            
    End If
            
            
    ' verifica se a tabela de empresas tem registro
            rec = DBUtils.ExecuteMemoryTable(DBUtils.SQL, "SELECT ID FROM Empresa",  Null0)
            
            
    Log("Rec Empresa local: " & rec.Size )
            
    If rec.Size = 0 Then
               sincronizeTabela( SINCRONIZE_EMPRESA )           
            
    End If
            
            DBUtils.SQL.TransactionSuccessful
        
    Catch
            
    ProgressDialogHide
            
    ToastMessageShow"ERRO: " & LastException.Message, True)
        
    End Try
        DBUtils.SQL.EndTransaction    
        
        
    ProgressDialogHide
    End Sub

    Sub sincronizeTabela(JobName As String)
        
    Dim job As HttpJob
        job.Initialize(JobName, Me)
        
        
    Select Case JobName
        
    Case SINCRONIZE_DEPOSITO                       
           job.PostString( 
    "https://www./xxx.php", _
                           
    "SELECT id, descricao FROM estoque_deposito ORDER BY id" )
           job.co
        
    Case SINCRONIZE_EMPRESA       
           job.PostString( 
    "https://www./xxx.php", _
                           
    "SELECT id, razaosocial, fantasia, apelido, depositoid FROM empresa WHERE (Excluido=False) ORDER BY id" )   
        
    End Select
        
    End Sub

    Sub JobDone(Job As HttpJob)
        
    Dim parser As JSONParser
        
    Dim res    As String
        
    Dim l      As List
        
        
    ProgressDialogHide   
        
    Try
            
    If Job.Success Then           
               res = Job.GetString
               parser.Initialize(res)
              
               
    Log("Resposta do servidor: " & res)
              
               
    ' transforma em uma lista
               l = parser.NextArray
                
               
    Log("Num Rec:" & l.Size )
                        
               
    If l.Size > 0 Then       
                  
    Select Job.JobName
                  
    Case SINCRONIZE_DEPOSITO
                     DBUtils.InsertMaps( DBUtils.SQL, 
    "Deposito", l)
                     
    ToastMessageShow("Tabela de Depósito concluída..."False)
                    
                  
    Case SINCRONIZE_EMPRESA
                     DBUtils.InsertMaps( DBUtils.SQL, 
    "Empresa", l)
                     
    ToastMessageShow("Tabela de Depósito concluída...",  False)
                    
                  
    End Select
               
    End If     
            
    Else
                
    Log(Job.ErrorMessage)
                
    ToastMessageShow("Erro: " & Job.ErrorMessage, True)
            
    End If
            Job.Release
        
    Catch
            
    Log(LastException)
            
    ToastMessageShow("Erro: " & LastExceptionTrue)
        
    End Try
    End Sub
    Ou seja eu gostaria que o usuário ficasse parado até terminar a atualização das duas tabelas?
     
  2. Douglas Farias

    Douglas Farias Expert Licensed User

    Pode usar o
    Code:
    ProgressDialogShow2("Carregando...",False)
    para forçar o usuário a ficar na tela sem cliques etc...

    e pode usar o sleep(tempo que deseja esperar)
    exemplo
    sleep(1000) = espera 1 segundo depois vai para a linha de baixo
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice