MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Comparar Datas ....atual, passada e futura.

    Compartilhe

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Silvio em Qui 24 Abr 2014, 22:37

    Prezados, boa noite a todos.

    Gostaria de contar com a ajuda de vocês. Preciso realizar três (3) comparações de datas.
    A data de hoje, a data do passado e a data do futuro.
    Para isso tenho o código que esta aqui.

    Private Sub LstPrNor_Click()
    ' esse evento preenche os campos de número de acordo e valor
    ' que estão no frmcadastro com base na cboTpPreco com base listbox.


    If Me.LstPrNor.Column(3) <> Forms!frmcadastro.Form!cbomot.Column(1) Then
    MsgBox ("Preço para o motivo: " & Forms!frmcadastro.Form!cbomot.Column(1) & vbCrLf & "Escolhido errado, reveja!"), vbCritical, Me.Caption
    Forms!frmcadastro.Form!NORMOTEXT = ""
    Me.LstPrNor.SetFocus
    Else
    strDate = "SELECT nordtvig FROM tblatznormal WHERE nordtvig = date" ** onde está o problema** onde nordtvig é um campo data, tblatznormal é a tabela
    '
    If strDate > Me.LstPrNor.Column(5) Then
    MsgBox "Você escolheu uma data FUTURO, confirme se é esse mesmo que deseja !"
    Else
    If strDate < Me.LstPrNor.Column(5) Then

    MsgBox "Você escolheu uma data Passada, confirme se é esse mesmo que deseja !"

    Forms!frmcadastro.Form!NORMOTEXT = Me.LstPrNor.Column(3)
    Forms!frmcadastro.Form!PRVIG = Me.LstPrNor.Column(4)
    Forms!frmcadastro.Form!PRLQD = Me.LstPrNor.Column(4)
    DoCmd.Close
    End If
    End If
    End If
    End Sub

    No depurar do mesmo....erro 13, tipos incompatíveis.

    Alguém tem alguma ideia ?

    Abraços.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    O autor desta mensagem foi removido do fórum - Ver a mensagem

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Silvio em Qui 24 Abr 2014, 23:06

    Grande Beto,boa noite...espero que tudo esteja bem contigo e com o teus.

    eis a Declaração: Dim strDate As Date

    Na tblatznor, a data esta no formato: data normal ou seja.....14-abr-2014


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    O autor desta mensagem foi removido do fórum - Ver a mensagem

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Silvio em Qui 24 Abr 2014, 23:34

    Negativo meu amigo...negativo mesmo.
    Estou deixando uma parte do sistema.
    Eu preciso, comparar a nordtvig e hrvig que estão na TblAtzNor com a data e hora de hoje....e informar ao usuário o que ele esta escolhendo.
    Se ele escolheu uma data anterior a hoje...msg de aviso.
    Se ele escolheu uma data posterior a hoje...msg de aviso
    Se ele escolheu uma data igual a hoje....msg de aviso também
    Se ele esta de acordo com o que ele esta escolhendo, preenche certos campos de outro formulário.
    Esse é um, tem mais 4 para fazer !
    Mas acertando um....o resto é fácil, se puder me ajudar, fico agradecido Beto.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    O autor desta mensagem foi removido do fórum - Ver a mensagem

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Avelino Sampaio em Sex 25 Abr 2014, 10:12

    Olá homem Raio!

    a variável strDate está recebendo uma STRING e não uma DATA.  Por isso o erro TIPO 13.

    a variável strDate não RODA a consulta em questão, ela apenas recebe a string.  Se vc quiser "rodar" a consulta sql é preciso usar o DAO.

    dim rs as dao.recordset
    dim strDate as string
    strDate="SELECT nordtvig FROM tblatznormal WHERE nordtvig = date"
    set rs = currentdb.openRecordset(strDate)
    If rs!nordtvig > Me.LstPrNor.Column(5) Then
    ...



    Ou o mais simples que é utilizar a função DLookup()

    dim dtaDate as date
    dtaDate = Dlookup("nordtvig","tblatznormal","nordtvig = date")
    If dtaDate > Me.LstPrNor.Column(5) Then


    poderá enfrentar outro problema que é a comparação de formatos de datas diferentes.  Então seria melhor acertar os formatos

    dtaDate = Dlookup("nordtvig","tblatznormal","nordtvig = date")
    If format(dtaDate,"mm/dd/yyyy") > format(Me.LstPrNor.Column(5),"mm/dd/yyyy") Then


    Sucesso!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Silvio em Sex 25 Abr 2014, 12:32

    Bom dia a todos....

    Avelino e Beto agradeço a ajuda de vocês, mas deu um erro.

    Private Sub LstPrNor_Click()
    ' esse evento preenche os campos de número de acordo e valor que estão no frmcadastro com base na cboTpPreco com base listbox.
    ' abaixo realizo a verificação de datas anterior, posterior ou atual, para não pegar preço errado.
    If Me.LstPrNor.Column(3) = Forms!frmcadastro.Form!cbomot.Column(1) Then
    dtaDate = DLookup("nordtvig", "tblatznor", "nordtvig = date") --> local do erro.

    If Format(dtaDate, "dd/mm/yyyy") > Format(Me.LstPrNor.Column(5), "mm/dd/yyyy") Then
    MsgBox "Você escolheu uma data FUTURO, confirme se é esse mesmo que deseja !", vbInformation, Me.Caption
    Forms!frmcadastro.Form!NORMOTEXT = Me.LstPrNor.Column(3)
    Forms!frmcadastro.Form!PRVIG = Me.LstPrNor.Column(4)
    Forms!frmcadastro.Form!PRLQD = Me.LstPrNor.Column(4)
    DoCmd.Close
    End If
    End If
    If Me.LstPrNor.Column(3) = Forms!frmcadastro.Form!cbomot.Column(1) Then
    dtaDate = DLookup("nordtvig", "tblatznor", "nordtvig = date")
    If Format(dtaDate, "mm/dd/yyyy") < Format(Me.LstPrNor.Column(5), "mm/dd/yyyy") Then
    MsgBox "Você escolheu uma data PASSADA, confirme se é esse mesmo que deseja !", vbInformation, Me.Caption
    Forms!frmcadastro.Form!NORMOTEXT = Me.LstPrNor.Column(3)
    Forms!frmcadastro.Form!PRVIG = Me.LstPrNor.Column(4)
    Forms!frmcadastro.Form!PRLQD = Me.LstPrNor.Column(4)
    DoCmd.Close
    End If
    End If
    MsgBox ("Preço para o motivo: " & Forms!frmcadastro.Form!cbomot.Column(1) & vbCrLf & "Escolhido errado, reveja!"), vbCritical, Me.Caption
    Forms!frmcadastro.Form!NORMOTEXT = ""
    Me.LstPrNor.SetFocus
    End Sub

    Erro de tempo de execução 2471 - A expressão que você inseriu como parâmetro da consulta gerou este erro: "date"


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

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Avelino Sampaio em Sex 25 Abr 2014, 12:52

    troque date por date() no dlookup

    Sucesso!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================
    O autor desta mensagem foi removido do fórum - Ver a mensagem
    O autor desta mensagem foi removido do fórum - Ver a mensagem

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Silvio em Sex 25 Abr 2014, 13:21

    Beto e Avelino....

    Ficou assim....

    Código:
    On Error Resume Next
    ' esse evento preenche os campos de número de acordo e valor que estão no frmcadastro com base na cboTpPreco com base listbox.
    ' abaixo realizo a verificação de datas anterior, posterior ou atual, para não pegar preço errado.

    If Me.LstPrNor.Column(3) = Forms!frmcadastro.Form!cbomot.Column(1) Then
    If Format(LstPrNor.Column(5), "mm/dd/yyyy") > Format(Date, "mm/dd/yyyy") Then
    MsgBox "Você escolheu um Preço FUTURO, confirme se é esse mesmo que deseja !", vbInformation, Me.Caption
    Forms!frmcadastro.Form!NORMOTEXT = Me.LstPrNor.Column(3)
    Forms!frmcadastro.Form!PRVIG = Me.LstPrNor.Column(4)
    Forms!frmcadastro.Form!PRLQD = Me.LstPrNor.Column(4)
    DoCmd.Close
    End If
    End If


    If Me.LstPrNor.Column(3) = Forms!frmcadastro.Form!cbomot.Column(1) Then
    If Format(LstPrNor.Column(5), "mm/dd/yyyy") < Format(Date, "mm/dd/yyyy") Then
    MsgBox "Você escolheu um preço PASSADO, confirme se é esse mesmo que deseja !", vbInformation, Me.Caption
    Forms!frmcadastro.Form!NORMOTEXT = Me.LstPrNor.Column(3)
    Forms!frmcadastro.Form!PRVIG = Me.LstPrNor.Column(4)
    Forms!frmcadastro.Form!PRLQD = Me.LstPrNor.Column(4)
    DoCmd.Close
    End If
    End If

    If Me.LstPrNor.Column(3) <> Forms!frmcadastro.Form!cbomot.Column(1) Then
    MsgBox ("Preço para o motivo:  " & Forms!frmcadastro.Form!cbomot.Column(1) & vbCrLf & "Escolhido errado, reveja!"), vbCritical, Me.Caption
    Forms!frmcadastro.Form!NORMOTEXT = ""
    Me.LstPrNor.SetFocus
    End If
    End Sub

    Funcionando perfeitamente..... Tive que entrar com o On error resume next, pois estava dando erro no ultimo if me.lstPrNor

    Agradeço aos dois pela ajuda e pela força que me deram.

    Ps. vou abrir um outro tópico a respeito de Duplicação de registros, tenho a tblcadastro e eu tenho que duplicar um registro, quando o end user escolher numa combobox uma palavra.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    O autor desta mensagem foi removido do fórum - Ver a mensagem

    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: [Resolvido]Comparar Datas ....atual, passada e futura.

    Mensagem  Silvio em Sab 26 Abr 2014, 13:01

    bom dia ......

    Tem razão Beto...tem toda a razão !


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

      Data/hora atual: Dom 04 Dez 2016, 14:15