MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Abrir form antes de continuar a execução do código

    Compartilhe
    avatar
    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 15/06/2013

    [Resolvido]Abrir form antes de continuar a execução do código

    Mensagem  Eloirp em Ter 03 Nov 2015, 15:43

    Tenho alguns processamentos que são um pouco lentos, então criei um form com a informação de "Processando" para o usuário saber que o sistema está trabalhando e ele deve aguardar, porém ocorre que o Access abre o form praticamente quando conclui a rotina e não ao iniciar como solicitado, alguém saberia me dizer se tem como forçar abrir primeiro o form antes de executar o restante do código?

    Private Sub bt_Salvar_Click()

    On Error GoTo ErroTrat:

      DoCmd.OpenForm "sys_processando"
         
       'consiste número do pedido --------------------------------------------------------------------------------------------------------------------------------------------------------------
       If IsNull(Me.Pedido) Then
           If MsgBox(" Número do Pedido não informado, importar NFe mesmo assim? ", vbYesNo + vbDefaultButton1 + vbInformation, " Sistema Interno ELPER ") = vbYes Then
               Me.Pedido = 0
           
           Else
               DoCmd.Close acForm, "sys_processando"
               Exit Sub
           End If
       End If..... segue o código

    DoCmd.Close acForm, "sys_processando"
    avatar
    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 328
    Registrado : 14/02/2011

    Abrir form antes de continuar a execução do código

    Mensagem  daniloreiis em Sex 06 Nov 2015, 00:45

    Boa noite amigo tudo joia ?

    segue exemplo espero que atenda, abraços e boa sorte!

    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Att, Danilo Reis
    -------------------------------------------------------------------------------------------------------------------------------------------------

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3383
    Registrado : 04/04/2010

    Re: [Resolvido]Abrir form antes de continuar a execução do código

    Mensagem  Avelino Sampaio em Sex 06 Nov 2015, 06:02

    Olá!

    Veja também a minha dica 12:

    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso!
    avatar
    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 15/06/2013

    Re: [Resolvido]Abrir form antes de continuar a execução do código

    Mensagem  Eloirp em Sex 06 Nov 2015, 14:59

    Muito obrigado pelas dicas Danilo e Avelino!
    Tentei usar ambas as discas, mas infelizmente ambas fazem o código parar e na verdade preciso que ele abra o form mas não pare! O Form é uma msg de que está processando, pois a rotina é um pouco longa e o BD é MySQL on-line, então demora um pouco e alguns usuários clicam novamente para executar achando que clicaram e nada aconteceu!
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    Registrado : 29/06/2012

    Re: [Resolvido]Abrir form antes de continuar a execução do código

    Mensagem  Noobezinho em Sex 06 Nov 2015, 19:45

    Eloir

    Experimente colocar uma pausa no código só para abrir o formulário:

    1= 1 segundo

    Abre o formulário, da uma pausa no código até ele abrir e continua.

    Private Sub bt_Salvar_Click()

    On Error GoTo ErroTrat:

     DoCmd.OpenForm "sys_processando"
     Pausa 2  
      'consiste número do pedido --------------------------------------------------------------------------------------------------------------------------------------------------------------
      If IsNull(Me.Pedido) Then
          If MsgBox(" Número do Pedido não informado, importar NFe mesmo assim? ", vbYesNo + vbDefaultButton1 + vbInformation, " Sistema Interno ELPER ") = vbYes Then
              Me.Pedido = 0
         
          Else
              DoCmd.Close acForm, "sys_processando"
              Exit Sub
          End If
      End If..... segue o código

    DoCmd.Close acForm, "sys_processando"


    Caso não tenha a função , aqui está ela:

    Código:

    Public Function Pausa(Nsec As Variant)
    'uso: Pausa 1  = 1 segundo
    On Error GoTo Err_Pausa

        Dim PausaTime As Variant, start As Variant

        PausaTime = Nsec
        start = Timer
        Do While Timer < start + PausaTime
        DoEvents
        Loop

    Exit_Pausa:
        Exit Function

    Err_Pausa:
        Dialog.Box Err.Number & " - " & Err.Description, vbCritical, "Pausa()"
        Resume Exit_Pausa

    End Function


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .
    avatar
    Eloirp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    Registrado : 15/06/2013

    Re: [Resolvido]Abrir form antes de continuar a execução do código

    Mensagem  Eloirp em Seg 09 Nov 2015, 13:06

    Valeu Noobezinho!

    Temporizador eu já tinha usado para não resolvia, porém usei parte da sua dica e fiz assim:

    coloquei a variável strCtrlSysProcess no form a ser aberto e ao abrir atribuo o valor 1 para ela e no form corrente coloquei a instrução em vermelho e agora ele aguarda abrir para atribuir o valor 1 para a variável e quando abre o código segue em frente...


    Private Sub bt_Salvar_Click()

    On Error GoTo ErroTrat:

       DoCmd.OpenForm "sys_Processando"
       
       Do While strCtrlSysProcess <> 1
       DoEvents
       Loop

       
       '1. consiste número do pedido --------------------------------------------------------------------------------------------------------------------------------------------------------------
       If IsNull(Me.Pedido) Then
           If MsgBox(" Número do Pedido não informado, importar NFe mesmo assim? ", vbYesNo + vbDefaultButton1 + vbInformation, " Sistema Interno ELPER ") = vbYes Then
               Me.Pedido = 0
           Else
               DoCmd.Close acForm, "sys_Processando"
               Exit Sub
           End If
       End If
       
       
       '2. consiste campo representante --------------------------------------------------------------------------------------------------------------------------------------------------------------
       If IsNull(Me.Repres) Then
           DoCmd.OpenForm "reg_ImportarXmlSaida_SelecRepres"
           DoCmd.Close acForm, "sys_Processando"
           Exit Sub
       End If


       '3. verifica se itens possuem saldo suficiente --------------------------------------------------------------------------------------------------------------------------------------------------------------
       Dim str_cProd, strStatusSld
       Dim str_qCom As Currency
       Dim db As Database
       Dim rs As Recordset
       strStatusSld = ""
       strRS = "SELECT cProd,qCom FROM Prod "
       Set db = CurrentDb
       Set rs = db.OpenRecordset(strRS)
                   
       Do While Not rs.EOF
           '3.1. --------------------------------------------------------------------------------------------------------------------
           str_cProd = rs!cProd
           str_qCom = FormatNumber(Nz(Replace(rs!qCom, ".", ","), 0), 0)
           strRS4 = "SELECT Produto,SldEstoque FROM tbl_Produto WHERE Produto = '" & str_cProd & "'"
           Call Cnn_Open
           Set Rs4 = cnn.Execute(strRS4)
           If Not Rs4.BOF Then..............

               
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    Registrado : 29/06/2012

    Re: [Resolvido]Abrir form antes de continuar a execução do código

    Mensagem  Noobezinho em Seg 09 Nov 2015, 13:21

    Que ótimo Eloir !

    O importante, é que funfou Razz

    Valeu o retorno!

    Boa sorte!


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

      Data/hora atual: Qui 29 Jun 2017, 03:09