MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições

    avatar
    souzadenilson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 98
    Registrado : 02/05/2012

    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições Empty [Resolvido]Maiúscula no inicio de todas as palavras sem preposições

    Mensagem  souzadenilson em 1/5/2020, 14:43

    Bom dia.
    Encontrei neste fórum um módulo no qual realizei algumas busca, funcionou porém um pequeno detalhe que não consegui descobrir ainda.
    Ele está convertendo em maiúscula toda primeira letra (Denilson Roberto De Souza), porém desejo que fique desse jeito (Denilson Roberto de Souza)
    Alguns dos colaboradores sabe onde encontra-se o erro?

    Código:
    Sub ColocaPrimeiraLetraMaiuscula()
    'Muda todas as palavras da tabela para inicial mai?scula
    'By JPaulo ? Maximo Access
    'adaptado por Alexandre Neves, em 2011-05-03, do f?rum MaximoAccess para manter "de" "da" "do" "dos" "e" "a"
    Dim db As Database, rst As Recordset, camp As Field
    Set db = CurrentDb
    Set rst = db.OpenRecordset("select * from " & "[" & Tabela & "]")
    If Not (rst.EOF) Then
    For Each camp In rst.Fields
    If camp.Name <> "Field Name" _
    And camp.Type = 10 _
    And Not IsNumeric(camp) _
    And camp.Attributes = 34 Then
    Do Until rst.EOF
    If camp.Value <> "" Then
    Debug.Print StrConv(camp.Value, vbProperCase);
    With rst
    .Edit
    camp.Value = StrConv(camp.Value, vbProperCase)
    .Update
    End With
    End If
    rst.MoveNext
    Loop
    CurrentDb.Execute "UPDATE [" & Tabela & "] SET [" & camp.Name & "]=Replace([" & camp.Name & "],' A ',' a ');"
    CurrentDb.Execute "UPDATE [" & Tabela & "] SET [" & camp.Name & "]=Replace([" & camp.Name & "],' Da ',' da ');"
    CurrentDb.Execute "UPDATE [" & Tabela & "] SET [" & camp.Name & "]=Replace([" & camp.Name & "],' De ',' de ');"
    CurrentDb.Execute "UPDATE [" & Tabela & "] SET [" & camp.Name & "]=Replace([" & camp.Name & "],' Do ',' do ');"
    CurrentDb.Execute "UPDATE [" & Tabela & "] SET [" & camp.Name & "]=Replace([" & camp.Name & "],' Dos ',' dos ');"
    CurrentDb.Execute "UPDATE [" & Tabela & "] SET [" & camp.Name & "]=Replace([" & camp.Name & "],' E ',' e ');"
    End If
    Next
    End Sub


    e no campo ficou dessa forma

    Código:
    Private Sub Id_NomeDizimistra_Exit(Cancel As Integer)
    Id_NomeDizimistra = StrConv(Id_NomeDizimistra, vbProperCase)
    End Sub


    Última edição por souzadenilson em 19/5/2020, 21:53, editado 1 vez(es)
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6957
    Registrado : 15/03/2013

    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições Empty Re: [Resolvido]Maiúscula no inicio de todas as palavras sem preposições

    Mensagem  ahteixeira em 2/5/2020, 11:00

    Olá Denilson,

    No seu código não está a chamar a sub ColocaPrimeiraLetraMaiuscula que faz o tratamento, veja:
    Código:
    Private Sub Id_NomeDizimistra_Exit(Cancel As Integer)
    Id_NomeDizimistra = StrConv(Id_NomeDizimistra, vbProperCase)
    End Sub

    Partilho abaixo função que faz o pretendido, crie um Modulo novo e cole o código abaixo:
    Código:
    ' Para ...: MaximoAccess - 2020
    ' Autor ..: Alvaro Teixeira (ahteixeira)
    ' Código .: sRestoMinusculas
    ' Data ...: 04-10-2009
    ' Obs ....: Converte o resto das palavras que falta para minusculas
    '           Retiras espacos errados no inicio e duplicados
    Public Function sRestoMinusculas(Origem As String) As String
    Dim i, t, v As Integer
    Dim StrTemp As String
    Dim ReporStr As String
    Dim LocStr As String
    Dim StrLen As Integer
    Dim Inicio As Integer

    If IsNull(Origem) Then Exit Function
        

        Do Until Left(Origem, 1) <> Space(1) 'Retira espaços à esqª
            Origem = Right(Origem, Len(Origem) - 1)
        Loop

    For t = 1 To 9
        If t = 1 Then LocStr = " A ": ReporStr = " a "
        If t = 2 Then LocStr = " E ": ReporStr = " e "
        If t = 3 Then LocStr = " O ": ReporStr = " o "
        If t = 4 Then LocStr = " Do ": ReporStr = " do "
        If t = 5 Then LocStr = " Dos ": ReporStr = " dos "
        If t = 6 Then LocStr = " Da ": ReporStr = " da "
        If t = 7 Then LocStr = " Das ": ReporStr = " das "
        If t = 8 Then LocStr = " De ": ReporStr = " de "
        If t = 9 Then LocStr = "  ": ReporStr = " "
        
        StrLen = Len(LocStr)
        
        StrTemp = Origem
        Inicio = InStr(StrTemp, LocStr)
        Do Until Inicio = 0
            StrTemp = Left(Origem, Inicio - 1) & ReporStr & Mid(Origem, Inicio + StrLen)
            Inicio = InStr(StrTemp, LocStr)
            Origem = StrTemp
        Loop
        sRestoMinusculas = StrTemp
    Next

    End Function

    Depois altere no seu código de forma a ficar assim:
    Código:
    Id_NomeDizimistra = sRestoMinusculas(StrConv(Id_NomeDizimistra, vbProperCase))

    Abraço
    avatar
    souzadenilson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 98
    Registrado : 02/05/2012

    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições Empty Re: [Resolvido]Maiúscula no inicio de todas as palavras sem preposições

    Mensagem  souzadenilson em 2/5/2020, 23:56

    Boa noite.
    Segui conforme suas orientações, porém quando digito as informações no campo não consigo ir para o campo seguinte e o sistema para de responder
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6957
    Registrado : 15/03/2013

    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições Empty Re: [Resolvido]Maiúscula no inicio de todas as palavras sem preposições

    Mensagem  ahteixeira em 3/5/2020, 12:05

    Olá Denilson,

    No inicio do Módulo deve colocar Option Compare Binary, veja:
    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições 0119

    Se tiver dificuldades, veja o tópico abaixo que atualizei com exemplo do que pretende fazer:
    https://www.maximoaccess.com/t28949-primeira-letra-maiuscula

    Abraço
    avatar
    souzadenilson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 98
    Registrado : 02/05/2012

    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições Empty Re: [Resolvido]Maiúscula no inicio de todas as palavras sem preposições

    Mensagem  souzadenilson em 3/5/2020, 22:25

    Boa noite. Funcionou perfeitamente.
    Obrigado pela dica
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6957
    Registrado : 15/03/2013

    [Resolvido]Maiúscula no inicio de todas as palavras sem preposições Empty Re: [Resolvido]Maiúscula no inicio de todas as palavras sem preposições

    Mensagem  ahteixeira em 19/5/2020, 15:26

    Olá Denilson,

    Obrigado pelo retorno, fico feliz por ter ajudado.

    Não se esqueça de dar o tópico como Resolvido, veja como fazer:
    https://www.maximoaccess.com/t860-resolucao-de-topicos

    Abraço

      Data/hora atual: 1/12/2020, 10:51