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


3 participantes

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

    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  leo.gool 19/6/2018, 15:28

    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

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves 19/6/2018, 19:25

    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
    avatar
    delsonk
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  delsonk 19/6/2018, 20:28

    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.
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  leo.gool 20/6/2018, 13:14

    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

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 04:44