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


2 participantes

    [Resolvido]Filtrar maior validade

    avatar
    victor.zero
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 16/02/2012

    [Resolvido]Filtrar maior validade Empty [Resolvido]Filtrar maior validade

    Mensagem  victor.zero 2/5/2016, 15:57

    Bom dia a todos,
    Gostaria de uma ajuda com esse select, estou tentando filtrar a maior data de validade de 3 tipos de documentos.

    Código:

    SELECT
             A.CODIGOVEIC
            ,A.CODIGOEMPRESA
            ,A.CODIGOFL
            ,A.PREFIXOVEIC
            ,A.PLACAATUALVEIC
            ,B.DESCRICAOTPVEIC
            ,C.DESCRICAOTPFROTA
            ,D.CODIGOTPDOC
            ,D.NUMERODOC
            ,E.DESCRICAOTPDOC
            ,F.VALIDADEVISTORIA
            
    FROM
             FRT_CADVEICULOS        A
            ,FRT_TIPODEVEICULO     B
            ,FRT_TIPODEFROTA        C  
            ,DVS_DOCUMENTO         D
            ,DVS_TIPODOCTO          E
            ,DVS_VISTORIA              F  
    WHERE
                A.CODIGOVEIC            =     624
    AND      A.CODIGOTPVEIC         =     B.CODIGOTPVEIC
    AND      A.CODIGOTPFROTA      =     C.CODIGOTPFROTA
    AND      A.CODIGOVEIC            =     D.CODIGOVEIC
    AND      D.CODIGOTPDOC         =     E.CODIGOTPDOC
    AND      D.NUMERODOC            =     F.NUMERODOC
    AND      D.CODIGOTPDOC         IN     (00014,00015,00016)


    Obs. Esse documentos tem renovação periódica, portanto toda vez que um documento é renovado tenho que cadastra-lo novamente pois alem da data de validade sua numeração também muda.
    Ex.

    1 - 624 - 2 - 1 - 0003279 - AAA-9999 - CAVALO MECANICO - FROTA A - 00015 - 0519052 - CIV - 30/04/2016
    2 - 624 - 2 - 1 - 0003279 - AAA-9999 - CAVALO MECANICO - FROTA A - 00015 - 0520055 - CIV - 25/05/2016

    O resultado do select é esse preciso que retorne somente o 2 registro pois sua validade é maior.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Filtrar maior validade Empty Re: [Resolvido]Filtrar maior validade

    Mensagem  JPaulo 3/5/2016, 09:41

    Ola;

    Sem testar aqui, teste e retorne por favor;

    Código:
    SELECT
            DISTINCT (A.PLACAATUALVEIC)
            ,DLAST(F.VALIDADEVISTORIA) AS VALIDADEVIST
            ,A.CODIGOVEIC
            ,A.CODIGOEMPRESA
            ,A.CODIGOFL
            ,A.PREFIXOVEIC
            ,B.DESCRICAOTPVEIC
            ,C.DESCRICAOTPFROTA
            ,D.CODIGOTPDOC
            ,D.NUMERODOC
            ,E.DESCRICAOTPDOC
           
    FROM
            FRT_CADVEICULOS A
            ,FRT_TIPODEVEICULO    B
            ,FRT_TIPODEFROTA        C
            ,DVS_DOCUMENTO        D
            ,DVS_TIPODOCTO          E
            ,DVS_VISTORIA              F
    WHERE
                A.CODIGOVEIC = 624
    AND      A.CODIGOTPVEIC        =    B.CODIGOTPVEIC
    AND      A.CODIGOTPFROTA      =    C.CODIGOTPFROTA
    AND      A.CODIGOVEIC            =    D.CODIGOVEIC
    AND      D.CODIGOTPDOC        =    E.CODIGOTPDOC
    AND      D.NUMERODOC            =    F.NUMERODOC
    AND      D.CODIGOTPDOC        IN    (00014,00015,00016)
    GROUP BY 1,2,3,4,5,6,7,8,9,10,11


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Filtrar maior validade Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Filtrar maior validade Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Filtrar maior validade Folder_announce_new Instruções SQL como utilizar...
    avatar
    victor.zero
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 16/02/2012

    [Resolvido]Filtrar maior validade Empty Re: [Resolvido]Filtrar maior validade

    Mensagem  victor.zero 3/5/2016, 12:43

    Bom dia

    Fiz o teste mais não funcionou continuou trazendo o mesmo resultado.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Filtrar maior validade Empty Re: [Resolvido]Filtrar maior validade

    Mensagem  JPaulo 3/5/2016, 13:09

    Sabe que assim é dificil de ajudar, até porque envolve varias tabelas.

    Quer anexar aqui parte do seu banco ?


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Filtrar maior validade Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Filtrar maior validade Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Filtrar maior validade Folder_announce_new Instruções SQL como utilizar...
    avatar
    victor.zero
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 16/02/2012

    [Resolvido]Filtrar maior validade Empty Re: [Resolvido]Filtrar maior validade

    Mensagem  victor.zero 3/5/2016, 13:24

    Com esse select até consigo o problema é que perco a referencia do número do documento.

    Código:
    SELECT

           A.CODIGOVEIC               CODVEIC
          ,A.CODIGOEMPRESA            EMP
          ,A.CODIGOFL                 FIL
          ,A.PREFIXOVEIC              PREFIXO
          ,A.PLACAATUALVEIC           PLACA
          ,A.CODIGOTPVEIC             CODTPVEI
          ,B.DESCRICAOTPVEIC          TIPOVEICULO
          ,A.CODIGOTPFROTA            CODTPFRT
          ,C.DESCRICAOTPFROTA         TIPOFROTA
          ,D.CODIGOTPDOC              CODTPDOC
          ,E.DESCRICAOTPDOC           DOCUMENTO
          --,D.NUMERODOC                NUMERO
          ,MAX(F.VALIDADEVISTORIA)    VALIDADE
          ,F.OBSERVACAOVISTORIA       OBS

    FROM
           FRT_CADVEICULOS       A
          ,FRT_TIPODEVEICULO     B
          ,FRT_TIPODEFROTA       C
          ,DVS_DOCUMENTO         D
          ,DVS_TIPODOCTO         E
          ,DVS_VISTORIA          F

    WHERE
          A.CONDICAOVEIC     =    'A'
     AND  A.CODIGOTPVEIC     =    B.CODIGOTPVEIC
     AND  A.CODIGOTPFROTA    =    C.CODIGOTPFROTA
     AND  D.CODIGOVEIC       =    A.CODIGOVEIC
     AND  D.CODIGOTPDOC      =    E.CODIGOTPDOC
     AND  D.NUMERODOC        =    F.NUMERODOC
     AND  D.CODIGOTPDOC      =    F.CODIGOTPDOC
     AND  D.CODIGOTPDOC      IN   ('00004','00015','00016')
     AND  A.CODIGOVEIC       =    624

    GROUP BY
          A.CODIGOVEIC
         ,A.CODIGOEMPRESA
         ,A.CODIGOFL
         ,A.PREFIXOVEIC
         ,A.PLACAATUALVEIC
         ,A.CODIGOTPVEIC
         ,B.DESCRICAOTPVEIC
         ,A.CODIGOTPFROTA
         ,C.DESCRICAOTPFROTA
         ,D.CODIGOTPDOC
         ,E.DESCRICAOTPDOC
         --,D.NUMERODOC
         ,F.OBSERVACAOVISTORIA
    avatar
    victor.zero
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 97
    Registrado : 16/02/2012

    [Resolvido]Filtrar maior validade Empty Re: [Resolvido]Filtrar maior validade

    Mensagem  victor.zero 3/5/2016, 16:20

    Obrigado pela ajuda, consegui resolver, meu select ficou assim.

    Código:
    SELECT
          A.CODIGOVEIC              CODVEIC
          ,A.CODIGOEMPRESA            EMP
          ,A.CODIGOFL                FIL
          ,A.PREFIXOVEIC              PREFIXO
          ,A.PLACAATUALVEIC          PLACA
          ,A.CODIGOTPVEIC            CODTPVEI
          ,B.DESCRICAOTPVEIC          TIPOVEICULO
          ,A.CODIGOTPFROTA            CODTPFRT
          ,C.DESCRICAOTPFROTA        TIPOFROTA
          ,D.CODIGOTPDOC              CODTPDOC
          ,E.DESCRICAOTPDOC          DOCUMENTO
          ,D.NUMERODOC                NUMERO
          ,F.VALIDADEVISTORIA        VALIDADE
          ,F.OBSERVACAOVISTORIA      OBS
    FROM
          FRT_CADVEICULOS      A
          ,FRT_TIPODEVEICULO    B
          ,FRT_TIPODEFROTA      C
          ,DVS_DOCUMENTO        D
          ,DVS_TIPODOCTO        E
          ,DVS_VISTORIA          F
    WHERE
          F.VALIDADEVISTORIA = (
                                SELECT
                                      MAX(G.VALIDADEVISTORIA)
                                FROM
                                      DVS_VISTORIA G
                                WHERE
                                      G.CODIGOTPDOC = D.CODIGOTPDOC
                                AND  G.CODIGOVEIC = F.CODIGOVEIC                     
                              )                                                               
     AND  A.CONDICAOVEIC    =    'A'
     AND  A.CODIGOTPVEIC    =    B.CODIGOTPVEIC
     AND  A.CODIGOTPFROTA    =    C.CODIGOTPFROTA
     AND  D.CODIGOVEIC      =    A.CODIGOVEIC
     AND  D.CODIGOTPDOC      =    E.CODIGOTPDOC
     AND  D.NUMERODOC        =    F.NUMERODOC
     AND  D.CODIGOTPDOC      =    F.CODIGOTPDOC
     AND  D.CODIGOTPDOC      IN  ('00004','00015','00016')
     AND  F.VALIDADEVISTORIA >=  (SYSDATE - 100000)
     AND  F.VALIDADEVISTORIA <=  (SYSDATE + 30)
    ORDER BY
          F.VALIDADEVISTORIA

    Conteúdo patrocinado


    [Resolvido]Filtrar maior validade Empty Re: [Resolvido]Filtrar maior validade

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 13:40