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 UTILIZAÇÃO PELO UTILIZADOR DE CÓDIGO/MACRO FORNECIDA NESTE ARTIGO É DA RESPONSABILIDADE DO UTILIZADOR. A Microsoft fornece este código/macro "tal como está" sem garantias de qualquer tipo, expressas ou implícita, incluindo sem limitação as garantias implícitas de comercialização e/ou adequação a um fim específico.
NOTA: No código de exemplo seguinte, um sublinhado (_) no final de uma linha é utilizado como um carácter de continuação de linha. Para versões do BASIC que não suportem caracteres a continuação de linha, remova o carácter de sublinhado do final da impressão em série com a seguinte linha e linha quando recriar este código.
Campos são analisados e removidos do nome pela seguinte ordem:
Título-(se a primeira palavra corresponde à lista de títulos padrão) Grau-(nome após o primeira ponto e vírgula) Pedigree-(se a última palavra corresponde à lista de pedigrees padrão) Apelido Nome-(não pode conter espaços, mas pode ser hifenizada) Nome-(não deve conter espaços) 2 º Nome Initial(s)-(o resto)
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 caixas de texto sete (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
Apresentar o formulário, escreva um nome para txtName e clique no botão de comando. Os outros seis campos devem conter os valores analisados.
Outras notas, limitações e sugestões para melhoramento (à esquerda para dispositivos o leitor):
A rotina análise assume uma vírgula antes do grau, mas não antes do Pedigree. Se existir uma vírgula antes do Pedigree, será incluído como parte do Degree(s). Se pretender permitir Pedigree como estando precedidos por uma vírgula, pode adicionar uma verificação adicional para verificar que se a primeira palavra (separados por vírgulas) do grau está na lista de Pedigrees padrão.
O primeiro e último nome é considerados como contêm sem espaços. Se o fizerem (por exemplo, Maria Beth são João), parte do nome (por exemplo, são beth) ficará no valor devolvido inicial/outro nome ao centro. Infelizmente, devido a variabilidade alta de neste caso, existe não boa solução diferente intervenção manual.
A rotina de análise foi concebida para nomes de inglês/americano. Outros idiomas podem ter diferentes convenções que poderão requerer ajustes ao código de análise.
A lista de títulos e Pedigrees padrão poderá ser facilmente expandida adicionando entradas para dois declarações Const ParseName.
É possível efectuar a verificação de título mais genérica procurando um ponto final no fim 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.