Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
AVISO: QUALQUER USO DE CÓDIGO/MACRO FORNECIDA NESTE ARTIGO É DE SUA RESPONSABILIDADE. A Microsoft fornece esse código/macro "como estão" sem garantia de qualquer tipo, expressa ou implícita, inclusive mas não limitada às garantias implícitas de comercialização e/ou adequação a uma finalidade específica.
Observação: No exemplo de código a seguir, um sublinhado (_) no final de uma linha é usado como um caractere de continuação de linha. Para versões do BASIC que não oferecem suporte a caracteres de continuação de linha, remova o sublinhado do final da linha de mesclagem com a seguinte linha ao recriar esse código.
Campos são analisados e removidos do nome na seguinte ordem:
Título-(se a primeira palavra corresponde à lista de títulos padrão) Grau-(alguma coisa depois da primeira vírgula) Pedigree-(se a última palavra corresponde à lista de pedigrees padrão) Sobrenome nome-(não deve conter espaços, mas pode ser hifenizada) Nome-(não deve conter espaços) Meio Initial(s)-(restante)
Function CutLastWord (ByVal S As String, Remainder As String) _
As String
' CutLastWord: returns the last word in S.
' Remainder: returns the rest.
'
' Words are separated by spaces
'
Dim I As Integer, P As Integer
S = Trim$(S)
P = 1
For I = Len(S) To 1 Step -1
If Mid$(S, I, 1) = " " Then
P = I + 1
Exit For
End If
Next I
If P = 1 Then
CutLastWord = S
Remainder = ""
Else
CutLastWord = Mid$(S, P)
Remainder = Trim$(Left$(S, P - 1))
End If
End Function
Function CutWord (ByVal S As String, Remainder As String) As String
'
' CutWord: returns the first word in S.
' Remainder: returns the rest.
'
Dim P As Integer
S = Trim$(S)
P = InStr(S, " ")
If P = 0 Then P = Len(S) + 1
CutWord = Left$(S, P - 1)
Remainder = Trim$(Mid$(S, P + 1))
End Function
Sub ParseName (ByVal S As String, Title As String, FName As String, _
MName As String, LName As String, _
Pedigree As String, Degree As String)
Dim Word As String, P As Integer, Found As Integer
Const Titles = "Mr.Mrs.Ms.Dr.Miss,Sir,Madam,Mayor,President"
Const Pedigrees = "Jr.Sr.III,IV,VIII,IX,XIII"
Title = ""
FName = ""
MName = ""
LName = ""
Pedigree = ""
Degree = ""
'
' Get Title
'
Word = CutWord(S, S)
If InStr(Titles, Word) Then
Title = Word
Else
S = Word & " " & S
End If
'
' Get Degree
'
P = InStr(S, ",")
If P > 0 Then
Degree = Trim$(Mid$(S, P + 1))
S = Trim$(Left$(S, P - 1))
End If
'
' Get Pedigree
'
Word = CutLastWord(S, S)
If InStr(Pedigrees, Word) Then
Pedigree = Word
Else
S = S & " " & Word
End If
'
' Get the rest
'
LName = CutLastWord(S, S) ' Last Name
FName = CutWord(S, S) ' First Name
MName = Trim(S) ' Initials/Middle Name(s)
End Sub
Para testar, crie um formulário com sete caixas de texto (txtName txtTitle, txtFirstName, txtMI, txtLastName, txtPedigree, txtDegree) e um botão de comando. Adicione o seguinte código:
Sub Command1_Click()
Dim Title As String, FName As String, MI As String
Dim LName As String, Pedigree As String, Degree As String
ParseName txtName, Title, FName, MI, LName, Pedigree, Degree
txtTitle = Title
txtFirstName = FName
txtMI = MI
txtLastName = LName
txtPedigree = Pedigree
txtDegree = Degree
End Sub
Exibir o formulário, digite um nome em txtName e clique no botão de comando. Os outros seis campos devem conter os valores analisados.
Outras anotações, limitações e sugestões para melhoria (à esquerda para dispositivos do leitor):
A rotina de análise assume uma vírgula antes do nível, mas não antes do Pedigree. Se houver uma vírgula antes do Pedigree, ele será incluído como parte do degree(s). Se você quiser permitir Pedigree como sendo precedidos por uma vírgula, você pode adicionar uma verificação adicional para verificar que se a primeira palavra (separados por vírgula) do nível está na lista de Pedigrees padrão.
O primeiro e último nomes é considerado contêm sem espaços. Se isso acontecer (por exemplo, Mary Beth são Paulo), parte do nome (por exemplo, são Beth) terminarão no valor de retorno do meio inicial/segundo nome. Infelizmente, devido à variabilidade alta da ocorrência, não há nenhuma solução alternativa boa diferente de intervenção manual.
A rotina de análise foi projetada para nomes de inglês/americano. Outras linguagens podem ter diferentes convenções que podem exigir ajustes para o código de análise.
A lista de títulos e Pedigrees padrão pode ser facilmente estendida adicionando entradas para as duas declarações Const em ParseName.
A verificação de título pode ser feita mais genérica procurando por um ponto no final da primeira palavra se ainda não estiver na lista de títulos padrão.
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 168799
(http://support.microsoft.com/kb/168799/en-us/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.