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

    Alterar cor de um campo através da data

    Compartilhe

    PetryX
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 21/03/2017

    Alterar cor de um campo através da data

    Mensagem  PetryX em Sab 23 Set - 9:03

    Bom dia aos mestres.

    Estou quebrando a cabeção com uma condição nesse código, procurei aqui mas não encontrei nenhum no mesmo seguimento...

    A questão pode ser simples, mas...

    Esse código esta rodando de boa, mas gostaria que quando passasse a data ao em vez dele continuar a cor (verde) ele me alterasse pra outra (vermelha).

    Desde de já obrigado pela atenção.

    Segui código:
    Código:


    Public Function fAtualizaData()
    On Error GoTo trataerro
    Dim Msg As String
    Dim Db As DAO.Database, rst As DAO.Recordset, StrSQL As String
    Dim MesAno As String
    Dim StrDia
    Dim ctrl As Control

    Set Db = CurrentDb
    'Defino uma variável e aplico na mesma o nome do mes e ano para ser utilizado
    'no filtro do recordset abaixo, assim filtro o mesmo apenas com as datas do mês
    MesAno = Me.MonthLabel.Caption & "/" & Me.YearLabel.Caption

    If DCount("*", "tbl_Vendas") <> 0 Then
       StrSQL = "SELECT tbl_Vendas.dtData FROM tbl_Vendas Where Format(dtData,'mmmm/yyyy') = '" & MesAno & "'"
       Set rst = Db.OpenRecordset(StrSQL)

    'Aplica um loop no recordset
    Do While Not rst.EOF
            'Executo um loop pelos controles do formulário
            For Each ctrl In Me.Controls
                'Muda Cores do Rótulos
                '--------------------------------------------------------------------------
                'Aqui carrego a variável strDia com as primeiras
                'duas posições da data contida no campo dtData
                StrDia = Left(rst!dtData, 2)
                'Como o dia de um digito é expresso sem o zero a frente
                'quando isto ocorrer a variável contera o dia mais o sinal da /
                'Então eu checo se a variável esta carregada com um valor numérico ou de texto
                'Sendo texto recarrego a variável com apenas o primeiro dígito
                If IsNumeric(StrDia) = False Then
                    StrDia = Left(rst!dtData, 1)
                        'como se está executando um loop nos controles do form, a cada loop
                        'checaremos o texto contido dentro do mesmo, se for igual ao dia contido
                        'no campo dtData no recordset aplicamos a cor de data agendada
                        If ctrl.Caption = StrDia Then
                            Me(ctrl.Name).BackColor = 8965045
                        End If
                    '----------------------------------------------------------
                    'Adaptação para feriados brasileiros
                    'Módulo criado por alexandre Neves (Fórum Máximo Acces)
                    'If FeriadoBrasileiro(rst!dtData) Then
                    '    Me(ctrl.Name).BackColor = vbRed ' define do feriado
                    'End If
                    '----------------------------------------------------------
                Else
                    'Sendo o dia de dois dígitos
                    StrDia = Left(rst!dtData, 2)
                       'como se está executando um loop nos controles do form, a cada loop
                        'checaremos o texto contido dentro do mesmo, se for igual ao dia contido
                        'no campo dtData no recordset aplicamos a cor de data agendada
                        If ctrl.Caption = StrDia Then
                            Me(ctrl.Name).BackColor = 8965045
                        End If
                    '----------------------------------------------------------
                    'Adaptação para feriados brasileiros
                    'Módulo criado por alexandre Neves (Fórum Máximo Acces)
                    'If FeriadoBrasileiro(rst!dtData) Then
                        'Me(ctrl.Name).BackColor = vbRed ' define do feriado
                    'End If
                    '----------------------------------------------------------
                End If
            'Vai para o próximo controle
            Next ctrl
        'Vai para o próximo registro do recordset
        rst.MoveNext
      Loop
      
      rst.Close
      Set Db = Nothing
    Cancela = False
    End If
    Exit_TrataErro:
        DoCmd.Hourglass False
        DoCmd.Echo True
     Exit Function

    trataerro:
    If err.Number = 13 Then
        Resume Next
    ElseIf err.Number = 438 Then
        Resume Next
    Else
     DoCmd.Hourglass False
     DoCmd.Echo True
     Msg = "Erro # " & Str(err.Number) & " gerado na " & err.Source _
     & vbNewLine & vbNewLine & "Descrição: " & err.Description _
     & vbNewLine & vbNewLine & "Por favor contate o Administrador de Sistema."
     MsgBox Msg, vbMsgBoxHelpButton + vbCritical, "Erro", err.Helpfile, err.HelpContext
     Resume Exit_TrataErro
    End If
    End Function
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3672
    Registrado : 20/04/2011

    Re: Alterar cor de um campo através da data

    Mensagem  Silvio em Sab 23 Set - 10:07

    Bom dia...

    Talvez algo parecido com isso abaixo...

    If ctrl.Caption = StrDia Then
    Me(ctrl.Name).BackColor = 8965045
    Elseif crlt.Caption> SrtDia then
    Me(ctrl.Name).BackColor = VbRed
    End If


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    PetryX
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 21/03/2017

    Re: Alterar cor de um campo através da data

    Mensagem  PetryX em Sab 23 Set - 11:03

    Ja avia tentado essa função...

    Teria que ser algo do tipo:

    If ctrl.Caption <= StrDia Then
                           Me(ctrl.Name).BackColor = 8965045
    ElseIf ctrl.Caption = StrDia Then
                           Me(ctrl.Name).BackColor = VbRed
                       End If

    mas não esta me dando o resultado desejado...

    fnicolau
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 24/08/2012

    Re: Alterar cor de um campo através da data

    Mensagem  fnicolau em Ter 3 Out - 17:37

    No meu programa coloquei isso:

    No Timer

    Private Sub Form_Timer()
    If Me.DTALERTA <= Date Then
     Me!Rótulo132.Visible = Not Me!Rótulo132.Visible
    End If
    End Sub

    Intervalo do cronômetro  750

    Observe que é a "Label" que fica piscando.
    E a data é de um campo txt.

    w_fabricio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 18/09/2010

    Alterar cor de um campo através da data

    Mensagem  w_fabricio em Ter 3 Out - 20:46

    Nas ocasiões em que precisei dessa condição, a melhor maneira foi usar uma formatação condicional nos campos.

      Data/hora atual: Qua 22 Nov - 7:59