• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

[Resolvido] Como formatar um matricula?

11 mensagens neste tópico

Boas podem ajudar-me a formatar a introdução de uma matricula, num dado campo? por exemplo ao introduzir letras no primeiro campo nao aceitar letras nos outros 2..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas repara que já existem matriculas com letras na primeira parte, outras com letras na segunda parte, e outras ainda com letras na última parte.

De certeza que queres isso assim?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas repara que já existem matriculas com letras na primeira parte, outras com letras na segunda parte, e outras ainda com letras na última parte.

De certeza que queres isso assim?

quero algo que por exemplo se introduzires AA no primeiro campo nos restantes nao deixar introduzir mais letras, se introduzires 11-AA- só deixar introduzir numeros... percebes?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Como o anolsi já disse, e bem, existem diferentes combinações de matriculas o que dificulta um pouco a validação. A forma de o fazeres é verificares se existem dois conjuntos de números e um de matricula (além de outras coisas gerais).

Para os numeros utilizas o método TryParse() e para o texto utilizas(por exemplo) as expressões regulares (aka regex) para verificar se é mesmo texto sem números. Depois incrementa-se os contadores e valida-se no fim.

Tens aqui um pequeno exemplo de como fazer:

Imports System.Text.RegularExpressions

Public Class Form1


    ''' <summary>
    ''' Verifica se a matricula é válida
    ''' </summary>
    ''' <param name="matricula">Número de matricula a validar</param>
    Private Function validaMatricula(ByVal matricula As String) As Boolean
        Dim pattern As String = "^\s*[a-zA-Z,\s]+\s*$"
        Dim totalStrings As Byte = 0
        Dim totalNumbers As Byte = 0

        Try

            ' Verifica se o número de caracteres é válido
            If matricula.Length <> 8 Then Return False

            ' Separa o texto num array usando o "-" como separador
            Dim str() As String = matricula.Split("-")

            ' Verifica se tem dois "-" (separadores)
            If str.Length <> 3 Then Return False

            ' Ciclo no array
            For x As Byte = 0 To str.Length - 1

                ' Verifica se é número e incrementa o contador
                Dim num As Byte
                If Byte.TryParse(str(x), num) Then
                    totalNumbers += 1
                End If

                ' Verifica se é texto e incrementa o contador (através de regex)
                Dim StringMatch As Match = Regex.Match(str(x), pattern)
                If StringMatch.Success Then
                    totalStrings += 1
                End If
            Next

            ' Caso tenha dois números e uma string mostra resultado verdadeiro
            If totalNumbers = 2 AndAlso totalStrings = 1 Then
                Return True
            Else
                Return False
            End If


        Catch ex As Exception
            ' Em caso de erro devolve o valor a false
            Return False
        End Try

    End Function



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' Testa se a matricula na TextBox1 (por exemplo) é verdadeira
        MessageBox.Show(validaMatricula(Me.TextBox1.Text))

    End Sub

End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já experimentaste ?

peço desculpa, mas postei na secção errada, tive a ver a logica desse codigo, e parece-me que iria funcionar, mas só em vb.net em vba penso que nao aceite regex e outras componentes do tipo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

peço desculpa, mas postei na secção errada, tive a ver a logica desse codigo, e parece-me que iria funcionar, mas só em vb.net em vba penso que nao aceite regex e outras componentes do tipo...

Ok, não há problema!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O exemplo em cima referido também dá para matriculas estrangeiras ? :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O exemplo em cima referido também dá para matriculas estrangeiras ? :hmm:

Não, só nacionais. Existem diferentes formatos de matrículas de acordo com o país.

Se precisares de alguma especifica diz qual o formato.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá + 1 vez

Preciso para todos os formatos que tiveres.

Estou fazendo uma BD Universal.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá + 1 vez

Preciso para todos os formatos que tiveres.

Estou fazendo uma BD Universal.

Obrigado.

Mas eu não tenho nenhum  :-[

Fiz este mas nunca tinha feito outro. Se precisares de ajuda em validar um ou outro formato tens de mostrar as condições.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora