none
Procedimento ou validação em Nº de Bilhete de Indentidade e Número de Passport RRS feed

  • Pergunta

  • Boa tarde a todos eu tenho uma dificuldade não consigo validar o Nº do Bilhete de Identidade ao inserir os dados na base de dados. Por exemplo cá em Angola o Nº de Bilhete tem o seguinte formato: 000077984LA123 são smepre catorze caracteres LA por ser Luanda a Capital mas em outras provincias também usa-se 2letras para identificar a província.

    Como isso tem haver com a integridade de um software eu quero que seje possível inserir só 14 caracteres mas n é o principal problema porque posso definir isto na Base de Dados, quero também ele insira o número do Bilhete neste formato: primeiro 9número depois 2letras a seguir 3números se tentar inserir de forma diferente dá erro e mostra uma mensagem com o formato correcto que deve ser inderido.

    As formas de validar no vb que conheço são essas descritas abaixo. Será que posso utilizar uma delas? se sim qual? caso contrário com deve-se fazer essa validação?

    1- RequiredFieldValidator

    2- CompareValidator

    3- RangeValidator

    4- RegularExpressionValidator

    5- CustomValidator

     

    o projecto é web com Vb.Net 2008, SQL Server 2008, ASP

    Obrigada a todos pela atenção e ajuda

     

    Suzary

     

    quinta-feira, 27 de janeiro de 2011 13:03

Todas as Respostas

  • Olá Suzary

    O local ideal para você fazer esta validação é na sua aplicação, é possível fazer no banco mas não recomendo pois os metodos poderá afetar sua performance

    a principio vejo duas formas com trigger (pior de todas ) e um check constraint, mas o melhor local seria validar na sua aplicação.

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Sugerido como Resposta Raul Santos Neto sexta-feira, 28 de janeiro de 2011 11:55
    quinta-feira, 27 de janeiro de 2011 13:08
  • Segue um exemplo com Constraint

    create table tbTeste02 (bilhete varchar(14))
    alter table tbTeste02 add constraint chk_bilhete check (isnumeric(left(bilhete,9))=1 and isnumeric(substring(bilhete,10,2))=0 and isnumeric(substring(bilhete,12,3))=1)
    
    --correto
    insert into tbTeste02 values('123456789LA123')
    --errado
    insert into tbTeste02 values('123456a89LA123')
    
    drop table tbTeste02
    
    

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 27 de janeiro de 2011 13:28
  • Suzary,

    Vá de "1- RequiredFieldValidator"  e então "4- RegularExpressionValidator". O primeiro, é claro, para validar que alguma coisa foi preenchida no campo. E com a segunda você conseguirá configurar a validação que você precisa antes mesmo do dado chegar no database! Tantos caracteres, com tantas letras, começando com números, etc, etc.. dê uma estudada em regular expressions, mas elas irão matar o seu problema.

    Um abraço,

    Raul Santos Neto


    http://raulsantosneto.wordpress.com
    • Sugerido como Resposta Raul Santos Neto sexta-feira, 28 de janeiro de 2011 11:55
    quinta-feira, 27 de janeiro de 2011 16:25
  • Obrigada.

    Testei este codigo no sql e deu certo, só que eu uso formulários e prefiro que de-me a mensagem de erro apartir deste mesmo formulário.

    Não podes ajudar-me a validar esta regra mesmo no vb.net com asp com o RegularExpressionValidator  por exemplo?

    segunda-feira, 31 de janeiro de 2011 13:39
  • Suzary

    Se você deseja continuar a validação no SQL, vc pode uasr um TRY CATCH e uasr um raiserror, da uma lida no link abaixo

    http://msdn.microsoft.com/en-us/library/ms175976.aspx

    Caso queria tratar o erro na aplicação (que echo a melhor opção) tente postar esta dúvida no forum de VB.NET

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    segunda-feira, 31 de janeiro de 2011 14:14