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]Atribuir valor a um campo com base na data

    Compartilhe

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 27/02/2018

    [Resolvido]Atribuir valor a um campo com base na data

    Mensagem  leo.gool em Ter 19 Jun 2018, 11:28 am

    Olá, a um tempo atrás eu havia aberto um tópico com ajuda em um problema, eu tenho um banco para gerenciamento do transporte, onde para um veículo sair eu devo informar qual é o veículo, o destino, a km de chegada de saída e o motorista, e para poder automatizar um pouco eu tenho uma função que atribui automaticamente a quilometragem de saída do veículo a quilometragem de chegada da última vez que ele saiu, o grande mestre J.PAULO me enviou um código excelente que faz isso, mas agora a km começou a não estar consistente, e percebi que o motivo é porque ele só compara o dia da saída, e desconsidera mês e ano, eu tentei resolver esse problema adicionando uma comparação dos meses e ano, mas não surtiu efeito, agradeceria muito se alguém pudesse me dar uma luz de como resolver esse problema, segue o código original e o editado.

    Original
    Código:
    Function Pequisa_KM_UltimaData(sVeiculo As String)
        Dim db          As Database
        Dim UltimData() As String
      Dim rs As DAO.Recordset

        Set db = CurrentDb
     
        Set rs = db.OpenRecordset("SELECT * " & _
                                    "FROM Eventos " & _
                                    "WHERE [Veículo/Placa] ='" & sVeiculo & "';")

        If rs.EOF = False Then
     
        rs.MoveLast
        rs.MoveFirst

        ReDim Preserve UltimData(rs.RecordCount) As String

        For i = 0 To rs.RecordCount - 1
     
            If UltimData(j) <= rs.Fields("Data Chegada")Then
              UltimData(j) = rs.Fields("Data Chegada")
              Pequisa_KM_UltimaData = rs.Fields("Km Chegada")
            End If
         
            rs.MoveNext

        Next i
     
    End If
        rs.Close
        Set rs = Nothing
        db.Close
        Set db = Nothing
    End Function


    Editado

    Código:
    Function Pequisa_KM_UltimaData(sVeiculo As String)
        Dim db          As Database
        Dim UltimData() As String
      Dim rs As DAO.Recordset

        Set db = CurrentDb
     
        Set rs = db.OpenRecordset("SELECT * " & _
                                    "FROM Eventos " & _
                                    "WHERE [Veículo/Placa] ='" & sVeiculo & "';")

        If rs.EOF = False Then
     
        rs.MoveLast
        rs.MoveFirst

        ReDim Preserve UltimData(rs.RecordCount) As String

        For i = 0 To rs.RecordCount - 1
     
            If UltimData(j) <= rs.Fields("Data Chegada") And Month(UltimData(j)) < Month(rs.Fields("Data Chegada")) And Year(UltimData(j)) < Year(rs.Fields("Data Chegada")) Then
              UltimData(j) = rs.Fields("Data Chegada")
              Pequisa_KM_UltimaData = rs.Fields("Km Chegada")
            End If
         
            rs.MoveNext

        Next i
     
    End If
        rs.Close
        Set rs = Nothing
        db.Close
        Set db = Nothing
    End Function

    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6806
    Registrado : 05/11/2009

    Re: [Resolvido]Atribuir valor a um campo com base na data

    Mensagem  Alexandre Neves em Ter 19 Jun 2018, 3:25 pm

    Boa tarde
    Tente

    Function Pequisa_KM_UltimaData(sVeiculo As String)
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset("SELECT [Km Chegada] FROM Eventos WHERE [Veículo/Placa] ='" & sVeiculo & "' ORDER BY [Data Chegada] Desc;")

    If rs.EOF = False Then Pequisa_KM_UltimaData = rs.Fields("Km Chegada")

    rs.Close
    Set rs = Nothing
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    delsonk
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 26/11/2013

    Re: [Resolvido]Atribuir valor a um campo com base na data

    Mensagem  delsonk em Ter 19 Jun 2018, 4:28 pm

    Boa tarde.

    Não sou especialista no assunto mas deixo a consulta abaixo para fins de exemplo, a qual eu utilizo de comparação de data de nascimento [Base de Dados].NASC, no formato: 07/05/2002, na qual seleciono a parte dia e mês da data de nascimento DatePart("d",[Nasc]) & "/" & DatePart("m",[Nasc]) e também verifico mais 5 dias a frente para fins de imprimir cartões de aniversário.

    SELECT [Base de Dados].Cont, [Base de Dados].NR, [Base de Dados].NOME, [Base de Dados].[NOME DE GUERRA], [Base de Dados].NASC, DatePart("d",[Nasc]) & "/" & DatePart("m",[Nasc]) AS Nasc1
    FROM [Base de Dados]
    WHERE ((((Month([NASC])))=Month(Now())) AND (((Day([NASC]))) Between Day(Now()) And Day(Now())+5) AND (([Base de Dados].Turma)=[Formulários]![Cadatro de Atiradores matriculados no TG]![Turma]));

    Saudações.

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 37
    Registrado : 27/02/2018

    Re: [Resolvido]Atribuir valor a um campo com base na data

    Mensagem  leo.gool em Qua 20 Jun 2018, 9:14 am

    Muitíssimo obrigado Alexandre Neves, funcionou perfeitamente!, obrigado pela disposição e colaboração, Delsonk, essa dica da consulta vai me servir para uma parte do sistema onde eu não estava conseguindo usar a função betwin, muito obrigado também

      Data/hora atual: Sab 21 Jul 2018, 10:44 am