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]Validação de número e sequência

    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 8/11/2019, 12:41

    Senhores. Bom dia!
    Venho mais uma vez recorrer ao conhecimento dos senhores
    Seria possível criar um módulo que fizesse o exposto abaixo?

    Nas tabelas Entrada / Saída, do arquivo em anexo, temos os campos “PTRA” e “PTR” que é o campo de amarração entre elas.
    Para cada item “PTRA” / “PTR” nós teremos o “IDP” M1 “sempre”, e, poderemos ter ou não o “IDP” I2 e I3.
    O que preciso é fazer uma validação do campo “TESTE” da seguinte maneira:
    1º Para o “IDP” M1 de ambas as tabelas o número deverá ser igual e ter o final “-00000”
    2º Para os “PTRA” / “PTR” que possuem o “IDP” I2 e I3 o número que antecede o “-“ deverá ser o mesmo em ambas as tabelas e igual ao número do “IDP” M1, tendo sua sequência começando pelo “IDP” I2 e continuando no “IDP” I3: Expl.

    Tabela Entrada

    PTRA        IDP TESTE
    0000111570450000 M1 3011000034-00000
    0000111570450000 I2 3011000034-00001
    0000111570450000 I2 3011000034-00002
    0000111570450000 I2 3011000034-00003

    Tabela Saída

    PTR        IDP TESTE
    0000111570450000 M1 3011000034-00000
    0000111570450000 I3 3011000034-00004
    0000111570450000 I3 3011000034-00005
    0000111570450000 I3 3011000034-00006
    0000111570450000 I3 3011000034-00007
    0000111570450000 I3 3011000034-00008
    0000111570450000 I3 3011000034-00009
    0000111570450000 I3 3011000034-00010
    0000111570450000 I3 3011000034-00011
    0000111570450000 I3 3011000034-00012
    0000111570450000 I3 3011000034-00013
    0000111570450000 I3 3011000034-00014
    0000111570450000 I3 3011000034-00015
    0000111570450000 I3 3011000034-00016
    0000111570450000 I3 3011000034-00017
    0000111570450000 I3 3011000034-00018
    0000111570450000 I3 3011000034-00019

    Para os itens que possuem somente o “IDP” M1 e I2, será validado somente o M1 e I2, expl.:

    Tabela Entrada

    PTRA        IDP TESTE
    0000107295270000 M1 3020001164-00000
    0000107295270000 I2 3020001164-00001
    0000107295270000 I2 3020001164-00002
    0000107295270000 I2 3020001164-00003
    0000107295270000 I2 3020001164-00004
    0000107295270000 I2 3020001164-00005


    Tabela Saída

    PTR        IDP TESTE
    0000107295270000 M1 3020001164-00000

    O mesmo acontecendo para os itens que tenham somente o “IDP” M1 e I3
    Validando também os itens que tenham somente o “IDP” M1

    Lembro que na coluna TESTE o número que antecede o “-“ não obedece uma regra de quantidade de caracteres

    Obs.
    É preciso que seja gerado um:

    Relatório talvez?
    Com o número do PTR/PTRA que contenham alguma divergência, seja ela no número que antecede o “-“ ou na sequência.
    Se não houver divergência seja informado também que não há erros

    Desde já agradeço imensamente a atenção dos senhores
    Anexos
    [Resolvido]Validação de número e sequência AttachmentTESTE SEQUENCIAL.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (23 Kb) Baixado 8 vez(es)
    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 11/11/2019, 09:49

    Bom dia a todos

    Alguém, poderia me ajudar?


    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 16/11/2019, 13:39

    Boa tarde
    Não entendi a explicação de I1, I2, I3,...
    Colocou 2 explicações que se parecem contraditórias em parte.


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 18/11/2019, 11:12

    Bom dia Alexandre
    Muito obrigado pelo contato.
    Tentando explicar melhor

    Amarrando-se PTR e PTRA

    Os itens que tenham IDP "M1", "I2" e "I3", antes do "-" o número deve ser igual para todos e o numero após o "-" fica assim:
    Para 0 "M1" = "-00000" de ambas as tabelas
    Para o "I2" = "-00001", "-00002", "-00003"
    Para o "I3" = "-00004"; "-00006", etc, ou seja uma continuação do "I2"
    Não tem IDP "I1"

    O intuito maior é validar o número que antecede o "-"
    Amarrando PTR com PTRA esse número deve ser iqual tanto no "M1", quanto no "I2" e "I3"

    Ex.
                        IDP      TESTE
    PTR 12121212  M1 = 151210-00000
    PTR 12121212 I3 = 151210-00003
    PTR 12121212 I3 = 151210-00004
    PTR 12121212 I3 = 151210-00005

    PTRA 12121212 M1 = 151210=00000
    PTRA 12121212 I2 = 151210-00001
    PTRA 12121212 I2 = 151210-00002

    Espero ter sido claro

    Desde já agradeço
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 18/11/2019, 22:13

    Boa noite,
    Não vi dados para teste, com desvio para ser encontrados pelo código, o que é muito importante
    Veja se é isto que pretende
    Código:
    Sub ValidaPTR()
        '--------------------------------------------------------------'
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        '--------------------------------------------------------------'    Dim I As Integer, Rst As DAO.Recordset, RstM As DAO.Recordset
        
        'lista PTRA da entrada que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTRA FROM Entrada WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela ENTRADA que não termina em -00000: " & Rst("PTRA")
            Rst.MoveNext
        Loop
        
        'lista PTR da saida que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTR FROM Saida WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela SAIDA que não termina em -00000: " & Rst("PTR")
            Rst.MoveNext
        Loop
        
        'verifica se tem PTR de Saida correspondente ao PTR de Entrada
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA FROM Entrada WHERE IDP='M1' and PTRA NOT IN (SELECT PTR FROM Saida WHERE IDP='M1')")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela ENTRADA, inexistente na tabela SAIDA: " & Rst("PTRA")
            Rst.MoveNext
        Loop
        'verifica se tem PTR de Entrada correspondente ao PTR de Saida
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTR FROM Saida WHERE IDP='M1' and PTR NOT IN (SELECT PTRA FROM Entrada WHERE IDP='M1')")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela SAIDA, inexistente na tabela ENTRADA: " & Rst("PTR")
            Rst.MoveNext
        Loop
        
        'Lista M1
        Set RstM = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA, TESTE FROM Entrada WHERE IDP='M1'")
        Do Until RstM.EOF
            I = 1
            'verifica sequência I2
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Entrada WHERE PTRA='" & RstM("PTRA") & " and IDP='I2' ORDER BY Teste")
            Do Until Rst.EOF
                If Rst("Teste") = Left(RstM("Teste"), 11) & Format(I, "00000") Then
                    I = I + 1
                Else
                    Debug.Print "Na tabela Entrada, falta TESTE=" & Left(RstM("Teste"), 11) & Format(I, "00000")
                    I = CInt(Right(Rst("Teste"), 5))
                End If
                Rst.MoveNext
            Loop
            
            'verifica sequência I3
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Saida WHERE PTR='" & RstM("PTRA") & " and IDP='I3' ORDER BY Teste")
            Do Until Rst.EOF
                If Rst("Teste") = Left(RstM("Teste"), 11) & Format(I, "00000") Then
                    I = I + 1
                Else
                    Debug.Print "Na tabela Saida, falta TESTE=" & Left(RstM("Teste"), 11) & Format(I, "00000")
                    I = CInt(Right(Rst("Teste"), 5))
                End If
                Rst.MoveNext
            Loop
            RstM.MoveNext
        Loop
    End Sub


    Última edição por Alexandre Neves em 19/11/2019, 18:08, editado 1 vez(es)


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 19/11/2019, 15:48

    Alexandre. Boa tarde!

    Estou testando o módulo desenvolvido por você, mas está dando um erro no next do final do módulo

    Erro:

    Erro de Compilação

    Next sem For


    Desde já agradeço

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 19/11/2019, 18:09

    Já melhorei
    No final, onde estava Next devia estar Loop (já está lá no código)


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 21/11/2019, 10:29

    Bom dia! Alexandre

    Agora está me dando erro na linha do código

    Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Entrada WHERE PTRA='" & RstM("PTRA") & " and IDP='I2' ORDER BY Teste")

    Erro:


    Erro em tempo de execução 3075
    Erro de sintaxe (operador faltando)
    Na expressão da consulta PTR=0000065391330000 and IDP=I2 order by teste


    Desde já agradeço o seu emprenho em ajudar-me

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 21/11/2019, 14:20

    Boa tarde
    Será
    Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Entrada WHERE PTRA='" & RstM("PTRA") & "' and IDP='I2' ORDER BY Teste")


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 21/11/2019, 15:12

    Então Alexandre

    Ele pinta essa linha do código de amarelo e abre uma janela com o erro que descrevi abaixo

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 22/11/2019, 20:21

    Boa noite,
    Remeto o módulo que refiz e não dá erro
    Código:
    Sub ValidaPTR()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim I As Integer, Rst As DAO.Recordset, RstM As DAO.Recordset
       
        'lista PTRA da entrada que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTRA FROM Entrada WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela ENTRADA que não termina em -00000: " & Rst("PTRA")
            Rst.MoveNext
        Loop
       
        'lista PTR da saida que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTR FROM Saida WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela SAIDA que não termina em -00000: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'verifica se tem PTR de Saida correspondente ao PTR de Entrada
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA FROM Entrada WHERE IDP='M1' and PTRA NOT IN (SELECT PTR FROM Saida WHERE IDP='M1')")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela ENTRADA, inexistente na tabela SAIDA: " & Rst("PTRA")
            Rst.MoveNext
        Loop
        'verifica se tem PTR de Entrada correspondente ao PTR de Saida
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTR FROM Saida WHERE IDP='M1' and PTR NOT IN (SELECT PTRA FROM Entrada WHERE IDP='M1')")
        Do Until Rst.EOF
            Debug.Print "PTRA existente na tabela SAIDA, inexistente na tabela ENTRADA: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'Lista M1
        Set RstM = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA, TESTE FROM Entrada WHERE IDP='M1'")
        Do Until RstM.EOF
            I = 1
            'verifica sequência I2
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Entrada WHERE PTRA='" & RstM("PTRA") & "' and IDP='I2' ORDER BY Teste")
            Do Until Rst.EOF
                If Rst("Teste") = Left(RstM("Teste"), 11) & Format(I, "00000") Then
                    I = I + 1
                Else
                    Debug.Print "Na tabela Entrada, falta TESTE=" & Left(RstM("Teste"), 11) & Format(I, "00000")
                    I = CInt(Right(Rst("Teste"), 5))
                End If
                Rst.MoveNext
            Loop
           
            'verifica sequência I3
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Saida WHERE PTR='" & RstM("PTRA") & "' and IDP='I3' ORDER BY Teste")
            Do Until Rst.EOF
                If Rst("Teste") = Left(RstM("Teste"), 11) & Format(I, "00000") Then
                    I = I + 1
                Else
                    Debug.Print "Na tabela Saida, falta TESTE=" & Left(RstM("Teste"), 11) & Format(I, "00000")
                    I = CInt(Right(Rst("Teste"), 5))
                End If
                Rst.MoveNext
            Loop
            RstM.MoveNext
        Loop
    End Sub


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 26/11/2019, 00:39

    Boa noite Alexandre.

    Em primeiro lugar agradeço o seu empenho em ajudar-me

    Rodei o módulo e realmente não deu erro, porém alterei a sequencia de um I2, tornando-a errada e o módulo não pegou.
    Alterei também uma numeração de um PTR na coluna teste que antecede o "-" e o módulo também não pegou


    Desde já agradeço
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 26/11/2019, 22:07

    Boa noite,
    Isso é a falha de dados significativos para testar o código
    Mande esses dados


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 27/11/2019, 01:43

    Boa noite Alexandre. Tudo bem?

    No arquivo em anexo no PTRA 0000111570450000 alterei um numero que antecede o "-" de 3011000034 para 3011020034 no campo teste
    E no PTR 0000065391330000 alterei a sequencia de um dos itens de 15 para 22 para que ficasse errada.
    Rodei o módulo e ele não apontou nenhum dos dois erros.

    Lembro que todo PTR e PTRA tem IDP M1, com sequencia "00000" e para os IDPs I2 e I3 de mesmo PTR e PTRA o número que antecedo o "-" deve ser igual
    ao de IDP M1 com a sequencia comecando no IDP I2 e continuando no IDP I3
    Nem todo PTR e PTRA tem IDP I2 e I3, mas todos tem IDP M1


    Grato
    Anexos
    [Resolvido]Validação de número e sequência AttachmentTESTE SEQUENCIAL.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (30 Kb) Baixado 5 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 27/11/2019, 21:48

    Boa noite,
    Veja agora
    Código:
    Sub ValidaPTR()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim I As Integer, C As Integer, UltC As Integer, Rst As DAO.Recordset, RstM As DAO.Recordset
       
        'lista PTRA da entrada que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTRA FROM Entrada WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela ENTRADA que não termina em -00000: " & Rst("PTRA")
            Rst.MoveNext
        Loop
       
        'lista PTR da saida que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTR FROM Saida WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela SAIDA que não termina em -00000: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'verifica se tem PTR de Saida correspondente ao PTR de Entrada
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA FROM Entrada WHERE IDP='M1' and PTRA NOT IN (SELECT PTR FROM Saida WHERE IDP='M1')")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela ENTRADA, inexistente na tabela SAIDA: " & Rst("PTRA")
            Rst.MoveNext
        Loop
        'verifica se tem PTR de Entrada correspondente ao PTR de Saida
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTR FROM Saida WHERE IDP='M1' and PTR NOT IN (SELECT PTRA FROM Entrada WHERE IDP='M1')")
        Do Until Rst.EOF
          MsgBox "PTRA existente na tabela SAIDA, inexistente na tabela ENTRADA: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'Lista M1
        Set RstM = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA, TESTE FROM Entrada WHERE IDP='M1'")
        Do Until RstM.EOF
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Entrada WHERE PTRA='" & RstM("PTRA") & "' and IDP='I2'")
            'verifica máximo I2
            I = 0
            Do Until Rst.EOF
                If CInt(Right(Rst("Teste"), 5)) > I Then I = CInt(Right(Rst("Teste"), 5))
                Rst.MoveNext
            Loop
            'verifica sequência I2
            For C = 1 To I
                Rst.FindFirst "Teste=Left(" & RstM("Teste") & ", 10) & '-' & Format(" & C & ", '00000')"
               
                If Rst.NoMatch Then
                    MsgBox "Na tabela Entrada, falta TESTE=" & Left(RstM("Teste"), 10) & "-" & Format(C, "00000")
                End If
            Next
            UltC = I
            'verifica sequência I3
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Saida WHERE PTR='" & RstM("PTRA") & "' and IDP='I3' ORDER BY Teste")
            'verifica máximo I3
            I = 0
            Do Until Rst.EOF
                If CInt(Right(Rst("Teste"), 5)) > I Then I = CInt(Right(Rst("Teste"), 5))
                Rst.MoveNext
            Loop
            'verifica sequência I3
            For C = UltC + 1 To I
                Rst.FindFirst "Teste=Left(" & RstM("Teste") & ", 10) & '-' & Format(" & C & ", '00000')"
               
                If Rst.NoMatch Then
                    MsgBox "Na tabela Saida, falta TESTE=" & Left(RstM("Teste"), 10) & "-" & Format(C, "00000")
                End If
            Next
            RstM.MoveNext
        Loop
        MsgBox "cabei mano", vbInformation
    End Sub


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 28/11/2019, 02:17

    Alexandre. Boa noite!

    Vou testar o módulo e te darei um retorno

    Muito obrigado

    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 10/12/2019, 10:28

    Alexandre. Bom dia!
    Tudo bem?

    Desculpe-me pela demora, mas é que me encontrava fora em um serviço externo e sem acesso a internet.

    Falando um pouco desse módulo
    Ele está funcionando em parte

    Exlico

    No arquivo anexado, por exemplo se filtrarmos o PTR/PTRA
    0000111570450000 nós teremos tanto na tabela Entrada quando na Saída o Teste 3011000034-00000 para IDP M1 Teremos I2 na tabela entrada com a sequencia de 00001 até 00003 e Temos na tabela Saída
    I3 com sequencia de 00004 a 00019, pois bem:

    O que pretendo é:

    1º Amarrando PTR com PTRA o módulo valide se o M1 esta com sequencia
    -00000 e o número que antecede o "-" nas duas tabelas são o mesmo.
    2º Amarrando PTR com PTRA o módulo valide se a sequencia está sem furo ou seja, no caso do exemplo acima e sempre começando pelo IDP I2 temos o -00001, -00002, 00003 e no I3 temos o -00004, -00005, etc até o -00019 sem furo 3º Amarrando PTR com PTRA o módulo valide se na coluna teste todos os IDP I2 e I3 tem o mesmo número que antecede o "-" do IDP M1, essa validação é muito importante

    Lembro que nem todo PTR e PTRA terão I2 e I3 como IDP mas todos terão o M1.
    O módulo deverá desprezar os demais IDP.

    No arquivo em anexado filtre o PTR/PTRA 0000111570450000, altere a sequencia de um dos dois IDP e rode o módulo, acho que ele está pegando o erro em parte

    Agora se de um dos itens você alterar o número que antecede o "-" ele não está pegando Lembro também que o número que antecede o "-" podem ser de tamanhos diferentes, ou seja não temos um padrão, podem ter números com 10 casas ou 11 casas, etc

    Reforço aqui o meu agradecimento pela sua atenção e empenho em ajudar-me com esse problema
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 10/12/2019, 20:06

    Boa noite,
    Não entendi em que situação o código errou, se indicou algo errado que está certo ou considerou algo certo que está errado


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 10/12/2019, 20:22

    Alexandre. Boa tarde!

    Ele não está indicando algo que está errado.

    Se fizer o teste que mencionei na última mensagem, você verá que o módulo roda e não acusa o erro

    Se o erro for na sequencia ele mostra, mas se o erro for no número que antecede o "-" ele não pega


    Grato

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 10/12/2019, 20:41

    Qual é o erro que tem nos dados e ele não indica?


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 11/12/2019, 10:53

    Alexandre. Bom dia!

    Então meu amigo

    Se no arquivo, filtrarmos o PTR e o PTRA 0000097416620000, nos teremos

    Entrada

    PTR IDP TESTE
    0000097416620000 M1 3020002312-00000
    0000097416620000 I2 3020002312-00001
    0000097416620000 I2 3020002312-00002
    0000097416620000 I2 3020002312-00003

    Saida

    PTRA IDP TESTE
    0000097416620000 M1 3020002312-00000
    0000097416620000 I3 3020002312-00004
    0000097416620000 I3 3020002312-00005
    0000097416620000 I3 3020002312-00006
    0000097416620000 I3 3020002312-00007
    0000097416620000 I2 3020002312-00008
    0000097416620000 I3 3020002312-00009
    0000097416620000 I3 3020002312-00010
    0000097416620000 I3 3020002312-00011
    0000097416620000 I3 3020002312-00012


    Pois bem, se alterarmos para que fique assim disposto:


    Entrada

    PTR IDP TESTE
    0000097416620000 M1 3020002312-00000
    0000097416620000 I2 3020002312-00001
    0000097416620000 I2 3020002312-00002
    0000097416620000 I2 3020002312-00003

    Saida

    PTRA IDP TESTE
    0000097416620000 M1 3020002312-00000
    0000097416620000 I3 3020002312-00001
    0000097416620000 I3 3020002518-00002
    0000097416620000 I3 3020002312-00003
    0000097416620000 I3 3020002312-00004
    0000097416620000 I2 3020002312-00005
    0000097416620000 I3 3020002312-00006
    0000097416620000 I3 3020002312-00007
    0000097416620000 I3 3020002312-00008
    0000097416620000 I3 3020002312-00009

    ele deveria informar que no PTR/PTRA 0000097416620000 tem erro na sequencia
    e no número que antecede o "_"
    Note que na saida eu alterei a sequencia comecando do 00001, 00002 etc
    e um dos números que antecedem o "-" eu alterei de 3020002312 para 3020002518

    Ou seja ele teria que validar se o PTR e PTRA 0000097416620000 tem o mesmo número antecedendo o "-" no IDP "M1"
    e se esse número é igual para os itens com IDP I2 e I3 e verificar a sequencia da numeração após o "-", lembrando que para o "M1" è sempre -00000
    e comecando pelo "I2" -00001, -00002 Etc e continuando no "I3" -00003, -00004 etc
    Essa verificação deve ser feita por PTR/PTRA.
    Espero ter conseguido explicar

    Grato

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 12/12/2019, 21:03

    Boa noite,

    Os dados que enviou na bd estão certos. Nem tem erro de sequência nem de dados de teste
    Devia ter enviado bd com dados significativos para testar o código

    No exemplo que expôs, nunca poderia existir na tabela ENTRADA um PTRA 0000097416620000 M1 3020002518-00000?
    É que se puder existir, tem de explicar de forma inequívoca a forma de validar algum valor fora de parâmetros


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 13/12/2019, 11:26

    Bom dia! Alexandre.
    Tudo bem?

    No Bd em anexo existe o erro para que você possa testar e no Excel está explicado as validações que deverão ser feitas.

    Todo PTR/PTRA tem IDP M1 e eles devem ter o final "-00000"

    No Excel em anexo está bem explicado

    Desde já agradeço a sua imensa ajuda
    Anexos
    [Resolvido]Validação de número e sequência AttachmentTESTE SEQUENCIAL.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (31 Kb) Baixado 4 vez(es)
    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 13/12/2019, 11:28

    Alexandre

    Aqui o Excel com a explicação detalhada


    Grato
    Anexos
    [Resolvido]Validação de número e sequência AttachmentExplicação da Validaçao que deverá ser feita pelo módulo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (11 Kb) Baixado 6 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 14/12/2019, 19:07

    Boa tarde
    Ao correr o código ele acusou a falta do registo 3020002312-00005
    Não é isso?


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 16/12/2019, 23:38

    Boa Noite Alexandre.

    Sim é isso, mas porisso é que eu disse que ele funciona parcialmente, pois de filtrarmos o PTR/PTRA correspondente a esse erro
    veremos que um dos números que antecede o "-" está incorreto, diferente do IDP M1 (3020002518-00005), o número que antecede o "-" no M1 é 3020002312 e ele não acusa esse erro.


    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 17/12/2019, 21:30

    Boa noite,
    Veja se é isto
    Código:
    Sub ValidaPTR()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim I As Integer, C As Integer, UltC As Integer, Rst As DAO.Recordset, RstM As DAO.Recordset
       
        'lista PTRA da entrada que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTRA FROM Entrada WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela ENTRADA que não termina em -00000: " & Rst("PTRA")
            Rst.MoveNext
        Loop
       
        'lista PTR da saida que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTR FROM Saida WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela SAIDA que não termina em -00000: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'lista PTR da saida que não tem correspondência na tabela de Entrada
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Saida WHERE PTR NOT IN (SELECT PTRA FROM Entrada) and Left(Teste,10) NOT IN (SELECT Left(Teste,10) FROM Entrada)")
        Do Until Rst.EOF
            MsgBox "Registo existente na tabela SAIDA sem correspondência na tabela Entrada: PTR " & Rst("PTR") & " IDP " & Rst("IDP") & " Teste " & Rst("Teste")
            Rst.MoveNext
        Loop

        'verifica se tem PTR de Saida correspondente ao PTR de Entrada
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA FROM Entrada WHERE IDP='M1' and PTRA NOT IN (SELECT PTR FROM Saida WHERE IDP='M1')")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela ENTRADA, inexistente na tabela SAIDA: " & Rst("PTRA")
            Rst.MoveNext
        Loop
        'verifica se tem PTR de Entrada correspondente ao PTR de Saida
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTR FROM Saida WHERE IDP='M1' and PTR NOT IN (SELECT PTRA FROM Entrada WHERE IDP='M1')")
        Do Until Rst.EOF
          MsgBox "PTRA existente na tabela SAIDA, inexistente na tabela ENTRADA: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'Lista M1
        Set RstM = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA, TESTE FROM Entrada WHERE IDP='M1'")
        Do Until RstM.EOF
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Entrada WHERE PTRA='" & RstM("PTRA") & "' and IDP='I2'")
            'verifica máximo I2
            I = 0
            Do Until Rst.EOF
                If CInt(Right(Rst("Teste"), 5)) > I Then I = CInt(Right(Rst("Teste"), 5))
                Rst.MoveNext
            Loop
            'verifica sequência I2
            For C = 1 To I
                Rst.FindFirst "Teste=Left(" & RstM("Teste") & ", 10) & '-' & Format(" & C & ", '00000')"
               
                If Rst.NoMatch Then
                    MsgBox "Na tabela Entrada, falta TESTE=" & Left(RstM("Teste"), 10) & "-" & Format(C, "00000")
                End If
            Next
            UltC = I
            'verifica sequência I3
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Saida WHERE PTR='" & RstM("PTRA") & "' and IDP='I3' ORDER BY Teste")
            'verifica máximo I3
            I = 0
            Do Until Rst.EOF
                If CInt(Right(Rst("Teste"), 5)) > I Then I = CInt(Right(Rst("Teste"), 5))
                Rst.MoveNext
            Loop
            'verifica sequência I3
            For C = UltC + 1 To I
                Rst.FindFirst "Teste=Left(" & RstM("Teste") & ", 10) & '-' & Format(" & C & ", '00000')"
               
                If Rst.NoMatch Then
                    MsgBox "Na tabela Saida, falta TESTE=" & Left(RstM("Teste"), 10) & "-" & Format(C, "00000")
                End If
            Next
            RstM.MoveNext
        Loop
        MsgBox "cabei mano", vbInformation
    End Sub


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 17/12/2019, 22:11

    Boa noite Alexandre.

    Está quase perfeito

    Fiz uns testes e ele está pegando o erro do IDP M1 que não termina em -00000
    Está pegando o erro de sequencia de numeração do IDP I2 e I3
    Só está faltando ele pegar o erro que antecede o "-"
    Se filtrarmos o PTR/PTRA 0000097416620000 o IDP M1, I2 e I3 tem o numero que antecede o "-" na coluna Teste como sendo
    3020002312 e um desses números foi trocado para 3020002518 e é justamente esse erro que ele não está acusando.

    Por PTR/PTRA todos os números que antecedem o "-" na coluna Teste dos IDP I2 e I3 devem ser igual ao do IDP M1

    Grato pela disposição em ajudar-me

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Alexandre Neves 17/12/2019, 22:38

    Vamos ver se é agora
    Tinha colocado and em vez de or
    Código:
    Sub ValidaPTR()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim I As Integer, C As Integer, UltC As Integer, Rst As DAO.Recordset, RstM As DAO.Recordset
       
        'lista PTRA da entrada que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTRA FROM Entrada WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela ENTRADA que não termina em -00000: " & Rst("PTRA")
            Rst.MoveNext
        Loop
       
        'lista PTR da saida que não acaba em -00000
        Set Rst = CurrentDb.OpenRecordset("SELECT PTR FROM Saida WHERE IDP='M1' and Not Teste Like '*-00000'")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela SAIDA que não termina em -00000: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'lista PTR da saida que não tem correspondência na tabela de Entrada
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Saida WHERE PTR NOT IN (SELECT PTRA FROM Entrada) or Left(Teste,10) NOT IN (SELECT Left(Teste,10) FROM Entrada)")
        Do Until Rst.EOF
            MsgBox "Registo existente na tabela SAIDA sem correspondência na tabela Entrada: PTR " & Rst("PTR") & " IDP " & Rst("IDP") & " Teste " & Rst("Teste")
            Rst.MoveNext
        Loop

        'verifica se tem PTR de Saida correspondente ao PTR de Entrada
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA FROM Entrada WHERE IDP='M1' and PTRA NOT IN (SELECT PTR FROM Saida WHERE IDP='M1')")
        Do Until Rst.EOF
            MsgBox "PTRA existente na tabela ENTRADA, inexistente na tabela SAIDA: " & Rst("PTRA")
            Rst.MoveNext
        Loop
        'verifica se tem PTR de Entrada correspondente ao PTR de Saida
        Set Rst = CurrentDb.OpenRecordset("SELECT DISTINCT PTR FROM Saida WHERE IDP='M1' and PTR NOT IN (SELECT PTRA FROM Entrada WHERE IDP='M1')")
        Do Until Rst.EOF
          MsgBox "PTRA existente na tabela SAIDA, inexistente na tabela ENTRADA: " & Rst("PTR")
            Rst.MoveNext
        Loop
       
        'Lista M1
        Set RstM = CurrentDb.OpenRecordset("SELECT DISTINCT PTRA, TESTE FROM Entrada WHERE IDP='M1'")
        Do Until RstM.EOF
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Entrada WHERE PTRA='" & RstM("PTRA") & "' and IDP='I2'")
            'verifica máximo I2
            I = 0
            Do Until Rst.EOF
                If CInt(Right(Rst("Teste"), 5)) > I Then I = CInt(Right(Rst("Teste"), 5))
                Rst.MoveNext
            Loop
            'verifica sequência I2
            For C = 1 To I
                Rst.FindFirst "Teste=Left(" & RstM("Teste") & ", 10) & '-' & Format(" & C & ", '00000')"
               
                If Rst.NoMatch Then
                    MsgBox "Na tabela Entrada, falta TESTE=" & Left(RstM("Teste"), 10) & "-" & Format(C, "00000")
                End If
            Next
            UltC = I
            'verifica sequência I3
            Set Rst = CurrentDb.OpenRecordset("SELECT Teste FROM Saida WHERE PTR='" & RstM("PTRA") & "' and IDP='I3' ORDER BY Teste")
            'verifica máximo I3
            I = 0
            Do Until Rst.EOF
                If CInt(Right(Rst("Teste"), 5)) > I Then I = CInt(Right(Rst("Teste"), 5))
                Rst.MoveNext
            Loop
            'verifica sequência I3
            For C = UltC + 1 To I
                Rst.FindFirst "Teste=Left(" & RstM("Teste") & ", 10) & '-' & Format(" & C & ", '00000')"
               
                If Rst.NoMatch Then
                    MsgBox "Na tabela Saida, falta TESTE=" & Left(RstM("Teste"), 10) & "-" & Format(C, "00000")
                End If
            Next
            RstM.MoveNext
        Loop
        MsgBox "cabei mano", vbInformation
    End Sub


    .................................................................................
    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
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Carlao2 2/1/2020, 21:03

    Alexandre.
    Boa tarde!
    Desejo a você um ótimo 2020.

    Agora sim está perfeito.

    Muito obrigado pela ajuda.
    A sua ajuda foi de grande valia.

    Abraços

    Conteúdo patrocinado


    [Resolvido]Validação de número e sequência Empty Re: [Resolvido]Validação de número e sequência

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 12:01