MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


2 participantes

    Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    avatar
    Ataide Junior
    Novato
    Novato


    Respeito às regras : 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 Empty Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior 21/7/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
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves 21/7/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
    avatar
    Ataide Junior
    Novato
    Novato


    Respeito às regras : 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 Empty Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior 22/7/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
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves 22/7/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
    avatar
    Ataide Junior
    Novato
    Novato


    Respeito às regras : 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 Empty Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior 22/7/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
    Retirar Caracteres especiais e Ordenar campo em ordem alfabética AttachmentDiasUteisTrabalhados.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (44 Kb) Baixado 60 vez(es)


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

    ...0
    _ />
    (_)/(_)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves 22/7/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
    avatar
    Ataide Junior
    Novato
    Novato


    Respeito às regras : 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 Empty Re: Retirar Caracteres especiais e Ordenar campo em ordem alfabética

    Mensagem  Ataide Junior 23/7/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
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves 23/7/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

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 22:29