Discussion:
Manipulação de Strings - Capitalização
(too old to reply)
Jamenson
2008-07-09 22:23:04 UTC
Permalink
Saudações a todos do grupo!

Sou iniciante em Visual Basic. Estou com um problema na entrada de
texto para uma base de dados. Existe um controle de texto vinculado a
um campo nome de uma tabela. O usuário deveria digitar o nome completo
do cliente nesse controle, respeitando a norma padrão da lingua
portuguesa, ou seja, o nome Jesus de Nazaré não poderia ser escrito
como JESUS DE NAZARE. Já tentei a função StrConv, mas ela me retorna
Jesus De Nazaré, o que é inadequado. Alguem pode me passar o código
completo de uma função para que eu possa estudar como funciona e
implementar?

Obrigado pela ajuda.

Jamenson Ferreira Espindula
Jamenson
2008-07-15 20:21:28 UTC
Permalink
Ninguém responde! Não existe ninguém que tenha alguma idéia?
Neryval Lima
2008-07-18 10:36:32 UTC
Permalink
Oi Jemerson,

Vê se isto te Ajuda

Enum Formato
Número
Moeda
Todo_Maiúsculo
Todo_Minúsculo
Inicio_Maiúsculo
Número_Geral
Personalizado
CPF_CNPJ
F_Data
Número_Fiscal
Hora
End Enum

Public Function Forma(Texto As Variant, Formato As Formato, Optional
Personal As String) As Variant
100 On Error GoTo erro
Forma = ""
Select Case Formato
Case 0 'Numero
Texto = TiraPonto(Texto)
Forma = Format(Texto, "###,##0.00")
Case 1 'Moeda
Texto = TiraPonto(Texto)
Forma = Format(Texto, "R$ ###,##0.00")
Case 2 'Todo Maiúsculo
Forma = UCase(Texto)
Case 3 'Todo Minusculo
Forma = LCase(Texto)
Case 4 'Inicio Maiúsculo
pula = "de da do dos das em na e a II III IV"
Texto = LCase(Texto)
For f = 1 To Len(Texto)
c = Mid(Texto, f, 1)
If (Asc(c) > 96 And Asc(c) < 123) And f = 1 Then Mid(Texto, f,
1) = UCase(Mid(Texto, f, 1))
If c = Chr(32) Then
If InStr(1, pula, Mid(Texto, f + 1, 3)) = 0 Then
Mid(Texto, f + 1, 1) = UCase(Mid(Texto, f + 1, 1))
End If
End If
Forma = Forma + Mid(Texto, f, 1)
Next
Case 5 'Número Geral
Texto = TiraPonto(Texto)
Forma = Format(Texto, "#####0.00")
Case 6 'Personalizado
Forma = Format(Texto, Personal)
Case 7 'CPF CNPJ
Texto = LimpaTexto(Texto)
If Len(Texto) <= 11 Then
Forma = Format(Texto, "@@@.@@@.@@@-@@")
Else
Forma = Format(Texto, "@@.@@@.@@@/@@@@-@@")
End If

Case 8 'Formato Data
Texto = TiraPonto(Texto)
Crt = ". / - :"
For f = 1 To Len(Texto)
Crtp = Mid(Texto, f, 1)
If InStr(1, Crt, Crtp) = 0 Then crtp2 = crtp2 & Crtp
Next f
Forma = Format(crtp2, "@@/@@/@@")

Case 9 'Formato Número Fiscal
Texto = TiraPonto(Texto)
Crt = ", . / - :"
For f = 1 To Len(Texto)
Crtp = Mid(Texto, f, 1)
If InStr(1, Crt, Crtp) = 0 Then crtp2 = crtp2 & Crtp
Next f
Forma = String(Personal - Len(crtp2), "0") & crtp2
Case 10
Texto = TiraPonto(Texto)
Forma = Format(Texto, "00:00")

End Select

101 Exit Function
110 erro:
120 If TrataErro = 0 Then Resume Next Else End
End Function


"Jamenson" <***@hotmail.com> escreveu na mensagem news:6ae4c902-2ebb-40c1-abaf-***@m3g2000hsc.googlegroups.com...
Saudações a todos do grupo!

Sou iniciante em Visual Basic. Estou com um problema na entrada de
texto para uma base de dados. Existe um controle de texto vinculado a
um campo nome de uma tabela. O usuário deveria digitar o nome completo
do cliente nesse controle, respeitando a norma padrão da lingua
portuguesa, ou seja, o nome Jesus de Nazaré não poderia ser escrito
como JESUS DE NAZARE. Já tentei a função StrConv, mas ela me retorna
Jesus De Nazaré, o que é inadequado. Alguem pode me passar o código
completo de uma função para que eu possa estudar como funciona e
implementar?

Obrigado pela ajuda.

Jamenson Ferreira Espindula

Loading...