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

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
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 FernandesMCP, 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
-
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 FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
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
-
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?
-
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 FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba