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]Comparar Datas ....atual, passada e futura.

    Compartilhe
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3648
    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
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3648
    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
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3648
    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
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3399
    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!
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3648
    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.]
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3399
    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!
    O autor desta mensagem foi removido do fórum - Ver a mensagem
    O autor desta mensagem foi removido do fórum - Ver a mensagem
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3648
    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
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3648
    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: Ter 24 Out 2017, 08:38