MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Compartilhe

    Ataide Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 21/07/2014

    Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior em Seg 21 Jul 2014, 20:31

    Olá para todos!

    Estou muito grato por participar dessa incrível comunidade e é claro que em algum momento eu deveria me expressar, sendo pelos agradecimentos ou por dúvidas.

    Bem, estou montando Query no Access 2007-2010 para ser importada para um programa de BI e as informações que chegam para ser tratadas foram importadas de um arquivo .XLS  e para que eu obtenha algumas informações importantes para análise futura me deparei com um problema.

    Um de seus atributos/Colunas de nome [SetInterg] chega com informações da seguinte forma :


    ABC / IJK
    I / J / K
    ABC + IJK
    AI / BJ / CK
    ABCEFGIJKMNO
    ABC / EFG - IJK
    ABC EFG IJK MNO



    O que preciso :

    1 - Retirar todos os caracteres especiais;
    2 - qualquer espaço em branco " ";
    3 - Ordenar em forma alfabética.


    Exemplo :


    AI / BJ - CK   - 1º Passo retirar : Caracteres especiais ( "/"; "-"; ";") +  Espaço em Branco (" ")

    Resultado esperado : AIBJCK

    AIBJCK        - 2º Ordenar em ordem alfabética :  

    Resultado Final Esperado : ABCIJK

    Desejaria utilizar esse processo por uma função aonde indicarei qual a coluna a ser tratada e a chamada da função.

    RetCaract([SetInterg])


    Desde Ja agradeço a todos que possam me ajudar.


    Ataide Junior

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5890
    Registrado : 05/11/2009

    Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Alexandre Neves em Seg 21 Jul 2014, 22:11

    Boa noite, e bem-vindo ao fórum
    Function RetiraCaracteresEspeciais(strTexto As String) As String
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' código criado por Alexandre Neves, do Fórum MaximoAccess '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    RetiraCaracteresEspeciais = Replace(strTexto, "/", "")
    RetiraCaracteresEspeciais = Replace(strTexto, "-", "")
    RetiraCaracteresEspeciais = Replace(strTexto, ";", "")
    RetiraCaracteresEspeciais = Replace(strTexto, " ", "")
    End Function

    Function OrdenaTexto(strTexto As String) As String
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' código criado por Alexandre Neves, do Fórum MaximoAccess '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim I As Integer, AindaOrdena As Boolean
    Ordena:
    AindaOrdena = False
    For I = 1 To Len(strTexto)
    If Mid(strTexto, I, 1) > Mid(strTexto, I + 1, 1) And Mid(strTexto, I + 1, 1) <> "" Then
    strTexto = Left(strTexto, I - 1) & Mid(strTexto, I + 1, 1) & Mid(strTexto, I, 1) & Mid(strTexto, I + 2)
    AindaOrdena = True
    End If
    Next
    If AindaOrdena Then GoTo Ordena
    OrdenaTexto = strTexto
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Ataide Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 21/07/2014

    Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior em Ter 22 Jul 2014, 14:20

    Alexandre, bom dia e muito obrigado pela resposta!


    Fiz alguns testes e identifiquei que o processo corresponde a uma das fases perfeitamente.


    Obtivemos sucesso para o ordenamento dos caracteres, no entanto o processo de retirada dos caracteres especiais não foi executado.

    Ao chamar a função obtenho o seguinte resultado :

    Usando a função : Expr1: OrdenaTexto([Table1]![SETORES A INTEGRAR])

    Texto original : ABC / IJK Resultado Obtido : /ABCIJK

    Texto original : ABC / IJK

    Usando a função : Expr2: RetiraCaracteresEspeciais([Table1]![SETORES A INTEGRAR])

    Warning : Undefined Function 'RetiraCaracteresEspeciais' in expresssion

    Fiz algumas tentativas sem sucesso para que esse processo ocorresse sem falhas, mas não consigo entender aonde estou errando. Tenho certeza que seu código esta correto, porém meu conhecimento ainda é pouco desenvolvido para entendimento.

    Estou tentando ler todo o material possível para gerar conhecimento sobre minhas necessidades, mas ainda é cedo.

    Abraços e aguardo caso você ou algum colega possa me ajudar.






    .................................................................................
    Ataide Júnior

    ...0
    _ />
    (_)/(_)

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5890
    Registrado : 05/11/2009

    Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Alexandre Neves em Ter 22 Jul 2014, 19:18

    Boa tarde,
    Fiz as funções tendo em conta que seriam chamadas independentes. Quer que sempre sejam chamadas em conjunto?
    A chamada de cada função é chamada de forma semelhante. Assim como não dá erro numa, não deverá dar erro na outra. Se precisar disponibilize dados significativos para se testar.


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Ataide Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 21/07/2014

    Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior em Ter 22 Jul 2014, 19:57

    Alexandre, boa tarde!

    Como o tratamento da informação é identificada na mesma célula, acredito que fosse ideal que executassem ao mesmo tempo, pois caso contrário, salvo minha ignorância teria que fazer duas execuções criando o mesmo dado em 2 etapas.

    Segue em anexo pequeno banco com dados que recolhi da informação a ser tratada.


    Grato + uma vez pela ajuda!
    Anexos
    DiasUteisTrabalhados.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (44 Kb) Baixado 13 vez(es)


    .................................................................................
    Ataide Júnior

    ...0
    _ />
    (_)/(_)

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5890
    Registrado : 05/11/2009

    Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Alexandre Neves em Ter 22 Jul 2014, 22:03

    A função não era reconhecida porque deu ao módulo o mesmo nome da função. Mude o nome do módulo
    Cole o código
    Código:

    Function RetiraCaracteresEspeciais(strTexto As String) As String
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' código criado por Alexandre Neves, do Fórum MaximoAccess '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    strTexto = Replace(strTexto, "/", "")
    strTexto = Replace(strTexto, "-", "")
    strTexto = Replace(strTexto, ";", "")
    strTexto = Replace(strTexto, " ", "")
    strTexto = Replace(strTexto, "+", "")
    RetiraCaracteresEspeciais = strTexto
    End Function

    Function OrdenaTexto(strTexto As String) As String
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' código criado por Alexandre Neves, do Fórum MaximoAccess '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim I As Integer, AindaOrdena As Boolean
    strTexto = RetiraCaracteresEspeciais(strTexto)
    Debug.Print strTexto & vbCr
    Ordena:
    AindaOrdena = False
    For I = 1 To Len(strTexto)
    If Mid(strTexto, I, 1) > Mid(strTexto, I + 1, 1) And Mid(strTexto, I + 1, 1) <> "" Then
    strTexto = Left(strTexto, I - 1) & Mid(strTexto, I + 1, 1) & Mid(strTexto, I, 1) & Mid(strTexto, I + 2)
    AindaOrdena = True
    End If
    Next
    If AindaOrdena Then GoTo Ordena
    OrdenaTexto = strTexto
    End Function

    na consulta
    TextoOrdenado: OrdenaTexto([tblSetores]![SETORES A INTEGRAR])


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Ataide Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 21/07/2014

    Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior em Qua 23 Jul 2014, 14:10

    Alexandre, bom dia!

    Sua orientação esta corretíssima, o que com certeza, me possibilitará dar um grande passo no meu projeto.


    Grato por suas explicações assim como, o seu tempo para desenvolver essa solução. Meu papel agora e pegar o que fora desenvolvido e trazer ao meu entendimento o que o código reproduz em suas etapas.

    É mais que perceptível o quanto ainda preciso caminhar, mas não desesteirei.


    Forte abraço e meu muito obrigado pelo seu tempo!







    .................................................................................
    Ataide Júnior

    ...0
    _ />
    (_)/(_)

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5890
    Registrado : 05/11/2009

    Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Alexandre Neves em Qua 23 Jul 2014, 15:15

    Boa tarde,
    O fórum existe para isto mesmo.
    Lembre-se de marcar "Resolvido" no botão da zona inferior direita do formulário do fórum


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: Sab 10 Dez 2016, 04:55