MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    [Resolvido]Dúvida com Cronômetros

    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Dúvida com Cronômetros Empty [Resolvido]Dúvida com Cronômetros

    Mensagem  vailson 2/8/2016, 18:29

    Olá amigos.

    Tenho um cronômetro regressivo e preciso que ele, ao zerar, inicie uma contagem progressiva.

    Código:
    Option Compare Database
    Dim t

    Private Sub Form_Load()
    Me.CRONO = "00:01:05"
    Me.TimerInterval = 100

    End Sub

    Private Sub form_timer()

    Dim xHora, h As Integer
    Dim xMinuto, m As Integer
    Dim xSegundo, s As Integer
    Dim x As Integer

    xSegundo = Second(CRONO)
    xMinuto = Minute(CRONO)
    xHora = Hour(CRONO)
    Me.TimerInterval = 1000

    If xSegundo > 0 Then
    xSegundo = xSegundo - 1
    Else
    xSegundo = 59
    If xMinuto > 0 Then
    xMinuto = xMinuto - 1
    Else
    xMinuto = 59
    If xHora >= 0 Then
    xHora = xHora - 1
    End If
    End If
    End If


    Me.CRONO = Format(TimeSerial(xHora, xMinuto, xSegundo), "hh:mm:ss")
    'If xHora = 0 And xMinuto = 0 And xSegundo = 0 Then
    'Beep

    'Me.TimerInterval = 0
    'DoCmd.Close

    'End If


    If xMinuto = 9 Then
    Me.Detalhe.BackColor = RGB(255, 255, 0)
    End If

    If xMinuto = 4 Then
    Me.Detalhe.BackColor = RGB(255, 165, 0)
    End If


    If xMinuto = 0 Then

    Static TrocaCor As Boolean
        If Not TrocaCor Then
            Me.Detalhe.BackColor = RGB(255, 0, 0)
        Else
            Me.Detalhe.BackColor = RGB(255, 255, 255)
        End If
      TrocaCor = Not TrocaCor 'Alterna o estado
    End If

    'If xHora = 0 And xMinuto = 0 And xSegundo = 0 Then

    End Sub

    Alguém ajuda?
    Obrigado!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  Alvaro Teixeira 2/8/2016, 19:55

    Olá, numa leitura breve do código parece fácil.
    Repare, no código esta a subtrair 1 ( - 1 )
    Deveria ser criada uma variavel e alterar para + iCronometro
    Também deveria ser necessário outra variavel a definir o tipo de cronometro, poderia ser

    CronometroRegressivo

    Do tipo true / false , em que por defeito era false

    O contador ao chegar a zero iria defenir True

    Depois só era necessário uma condição, exemplo:

    If CronometroRegressivo = false then
    ICronometro = -1
    Else
    ICronometro = 1
    Endif

    Não testado, desculpe apresentação mas foi do celular.
    Abraço
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  vailson 3/8/2016, 19:55

    não é apenas o sinaç que inverte o cronometro.
    Abaixo o código dele positivo
    Código:
    Option Compare Database
    Dim t

    Private Sub Form_Load()
    Me.CRONO = "00:00:00"
    Me.TimerInterval = 100

    End Sub

    Private Sub form_timer()

    Dim xHora, h As Integer
    Dim xMinuto, m As Integer
    Dim xSegundo, s As Integer
    Dim x As Integer

    xSegundo = Second(CRONO)
    xMinuto = Minute(CRONO)
    xHora = Hour(CRONO)
    Me.TimerInterval = 1000

    If xSegundo >= 0 Then
    xSegundo = xSegundo + 1
    Else
    xSegundo = 59
    If xMinuto >= 0 Then
    xMinuto = xMinuto + 1
    Else
    xMinuto = 59
    If xHora >= 0 Then
    xHora = xHora + 1
    End If
    End If
    End If


    Me.CRONO = Format(TimeSerial(xHora, xMinuto, xSegundo), "hh:mm:ss")
    end sub

    o ideal seria que ao chegar no zero, iniciasse esse aí
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  vailson 3/8/2016, 21:03

    Socorro, rsrs

    Código:
    Option Compare Database
    Dim t

    Private Sub Form_Load()
    Me.CRONOUP.Visible = False
    Me.CRONO = "00:00:05"
    Me.CRONOUP = "00:00:00"
    Me.TimerInterval = 100

    End Sub

    Private Sub form_timer()

    Dim xHora, h As Integer
    Dim uHora, j As Integer
    Dim xMinuto, m As Integer
    Dim uMinuto, N As Integer
    Dim xSegundo, s As Integer
    Dim uSegundo, D As Integer
    Dim x As Integer
    Dim u As Integer

    xSegundo = Second(CRONO)
    uSegundo = Second(CRONOUP)
    xMinuto = Minute(CRONO)
    uMinuto = Minute(CRONOUP)
    xHora = Hour(CRONO)
    uHora = Hour(CRONOUP)
    Me.TimerInterval = 1000

    If xSegundo >= 0 Then
    xSegundo = xSegundo - 1
    Else
    xSegundo = 59
    If xMinuto > 0 Then
    xMinuto = xMinuto - 1
    Else
    xMinuto = 59
    If xHora >= 0 Then
    xHora = xHora - 1

    End If
    End If
    End If


    Me.CRONO = Format(TimeSerial(xHora, xMinuto, xSegundo), "hh:mm:ss")
    'If xHora = 0 And xMinuto = 0 And xSegundo = 0 Then
    'Beep

    'Me.TimerInterval = 0
    'DoCmd.Close

    'End If


    If xMinuto = 9 Then
    Me.Detalhe.BackColor = RGB(255, 255, 0)
    End If

    If xMinuto = 4 Then
    Me.Detalhe.BackColor = RGB(255, 165, 0)
    End If


    If xMinuto = 0 Then

    Static TrocaCor As Boolean
        If Not TrocaCor Then
            Me.Detalhe.BackColor = RGB(255, 0, 0)
        Else
            Me.Detalhe.BackColor = RGB(255, 255, 255)
        End If
      TrocaCor = Not TrocaCor 'Alterna o estado
    End If

    If xHora = 0 And xMinuto = 0 And xSegundo = 0 Then
    'Me.Detalhe.BackColor = RGB(255, 0, 0)
    Me.CRONO.Visible = False
    Me.CRONOUP.Visible = True

    End If


    If uSegundo >= 0 Then
    uSegundo = uSegundo + 1
    Else
    uSegundo = 59
    If uMinuto >= 0 Then
    uMinuto = uMinuto + 1
    Else
    uMinuto = 59
    If uHora >= 0 Then
    uHora = uHora + 1
    End If
    End If
    End If


    Me.CRONOUP = Format(TimeSerial(uHora, uMinuto, uSegundo), "hh:mm:ss")

    End Sub



    Com esse código acima, o relógio, ao zerar, não começa a contagem do zero, e sim do valor atribuído como regressivo. Não consigo atribuir o valor zero a ele... Help
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  Alvaro Teixeira 4/8/2016, 12:15

    Olá Vailson,
    Poste a base de dados com o formulario onde pretende usar o cronometro.
    Assim fica mais fácil para qualquer membro ajudar.
    Abraço
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  vailson 4/8/2016, 17:12

    Nesse aí tem 2 cronômetros: um progressivo e um regressivo.
    A dúvida paira sobre o regressivo - ao chegar no zero ele deve começar uma contagem progressiva.
    Obrigado
    Anexos
    [Resolvido]Dúvida com Cronômetros AttachmentDatabase11.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (24 Kb) Baixado 4 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  Alvaro Teixeira 5/8/2016, 11:54

    Olá Vailson,
    Cole o código abaixo no exemplo que postou e teste.
    Está a fazer 10 segundos, depois ajuste para 30 minutos.
    Comentei as cores no meu teste, depois ajuste como pretendido.
    Abraço

    Código:
    Option Compare Database
    Dim t
    Dim booCronometroRegressivo As Boolean
    Dim iCronometro As Integer

    Private Sub Form_Load()
        Me.CRONOUP.Visible = False
        Me.CRONO = "00:00:10"
        Me.TimerInterval = 100
        booCronometroRegressivo = True
        iCronometro = -1
    End Sub

    Private Sub form_timer()
    Dim xHora, h As Integer
    Dim xMinuto, m As Integer
    Dim xSegundo, s As Integer
    Dim x As Integer

        xSegundo = Second(CRONO)
        xMinuto = Minute(CRONO)
        xHora = Hour(CRONO)
        Me.TimerInterval = 1000
        
        If xSegundo >= 0 Then
            xSegundo = xSegundo + iCronometro
        Else
            xSegundo = 59
            If xMinuto > 0 Then
                xMinuto = xMinuto + iCronometro
            Else
                xMinuto = 59
                If xHora >= 0 Then
                    xHora = xHora + iCronometro
                End If
            End If
        End If
        
        
        Me.CRONO = Format(TimeSerial(xHora, xMinuto, xSegundo), "hh:mm:ss")
        If xMinuto = 9 Then
            Me.Detalhe.BackColor = RGB(255, 255, 0)
        End If
        
        If xMinuto = 4 Then
            Me.Detalhe.BackColor = RGB(255, 165, 0)
        End If
        
        
        If xMinuto = 0 Then
        
        Static TrocaCor As Boolean
            If Not TrocaCor Then
    '            Me.Detalhe.BackColor = RGB(255, 0, 0)
            Else
    '            Me.Detalhe.BackColor = RGB(255, 255, 255)
            End If
          TrocaCor = Not TrocaCor 'Alterna o estado
        End If
        
        If xHora = 0 And xMinuto = 0 And xSegundo = 0 Then
            'altera para progressivo
            If booCronometroRegressivo = True Then
                booCronometroRegressivo = False
                iCronometro = 1
            End If
        End If
    End Sub



    Nota: Deve usar a indentação, fica mais fácil para ler o código, se tiver dúvidas, efetue uma busca aqui no fórum
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  vailson 8/8/2016, 19:00

    ahteiteira, exatamente isso.
    Antes de dar como resolvido, mais uma dúvida:
    Tem como esse troca cor aí não parar de ser executado? após um minuto ele para de executar, pois o comando if é para o minuto 0, quando a contagem for progressiva e passar de um minuto a condição vai deixar de existir.

    Código:
    If xMinuto = 0 Then
       
        Static TrocaCor As Boolean
            If Not TrocaCor Then
                Me.Detalhe.BackColor = RGB(255, 0, 0)
            Else
                Me.Detalhe.BackColor = RGB(255, 255, 255)
            End If
          TrocaCor = Not TrocaCor 'Alterna o estado
        End If

    Mas de antemão, obrigado!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  Alvaro Teixeira 8/8/2016, 20:21

    Olá, obrigado pelo retorno.
    Em que momento exacto é que pretende mudar a cor?
    Abraço
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  vailson 8/8/2016, 20:43

    A cor já muda aos 9, 4 e 0 minutos. Ocorre que quando a contagem passa a ser progressiva ele muda novamente. Preciso que a condição if deixe de existir quando a contagem for progressiva, e ele permaneça na condição de cor atual (piscando).
    Obrigado
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  Alvaro Teixeira 9/8/2016, 11:17

    Olá Vailson, efetue como eu fiz na mudança doncontador.
    Na parte que altera as cores, antes coloque o IF a controlar o tipo contador, será:

    If booCronometroRegressivo = True Then
    ... O que já tem a alterar as cores
    Endif

    Abraço
    avatar
    vailson
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 160
    Registrado : 08/05/2015

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  vailson 11/8/2016, 13:13

    ahteixeira,
    com suas dicas foi possível solucionar o meu problema. Muito obrigado!
    Resolvido!

    Código:
    Option Compare Database
    Dim t
    Dim booCronometroRegressivo As Boolean
    Dim iCronometro As Integer



    Private Sub Form_Load()
    DoCmd.GoToRecord , , acNewRec

        Me.horaent = Now
        Me.CRONOUP.Visible = False
        Me.CRONO = "00:30:00"
        Me.TimerInterval = 100
        booCronometroRegressivo = True
        iCronometro = -1
    End Sub

    Private Sub form_timer()
    Dim xHora, h As Integer
    Dim xMinuto, m As Integer
    Dim xSegundo, s As Integer
    Dim x As Integer

        xSegundo = Second(CRONO)
        xMinuto = Minute(CRONO)
        xHora = Hour(CRONO)
        Me.TimerInterval = 1000
       
        If xSegundo >= 0 Then
            xSegundo = xSegundo + iCronometro
        Else
            xSegundo = 59
            If xMinuto > 0 Then
                xMinuto = xMinuto + iCronometro
            Else
                xMinuto = 59
                If xHora >= 0 Then
                    xHora = xHora + iCronometro
                End If
            End If
        End If
       
       
        Me.CRONO = Format(TimeSerial(xHora, xMinuto, xSegundo), "hh:mm:ss")
       
       
        If booCronometroRegressivo = True And xMinuto = 9 Then
            Me.Detalhe.BackColor = RGB(255, 255, 0)
        End If
       
            If booCronometroRegressivo = True And xMinuto = 4 Then
            Me.Detalhe.BackColor = RGB(255, 1656, 0)
        End If
           
        If booCronometroRegressivo = True And xMinuto = 0 Then
           
        Static TrocaCor As Boolean
            If Not TrocaCor Then
                Me.Detalhe.BackColor = RGB(255, 0, 0)
            Else
                Me.Detalhe.BackColor = RGB(255, 255, 255)
            End If
          TrocaCor = Not TrocaCor 'Alterna o estado
        End If
       
        If booCronometroRegressivo = False Then
       
        If Not TrocaCor Then
                Me.Detalhe.BackColor = RGB(255, 0, 0)
            Else
                Me.Detalhe.BackColor = RGB(255, 255, 255)
            End If
          TrocaCor = Not TrocaCor 'Alterna o estado
        End If
     
       
        If xHora = 0 And xMinuto = 0 And xSegundo = 0 Then
            'altera para progressivo
            If booCronometroRegressivo = True Then
                booCronometroRegressivo = False
                iCronometro = 1
         
            End If
        End If
    End Sub

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  Alvaro Teixeira 11/8/2016, 14:49

    Olá Vailson, obrigado pelo retorno.
    Abraço

    Conteúdo patrocinado


    [Resolvido]Dúvida com Cronômetros Empty Re: [Resolvido]Dúvida com Cronômetros

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/5/2024, 19:35