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]Obter parte de morada num campo calculado em consulta

    avatar
    Ricardo84
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 18/01/2014

    [Resolvido]Obter parte de morada num campo calculado em consulta Empty [Resolvido]Obter parte de morada num campo calculado em consulta

    Mensagem  Ricardo84 em 1/12/2018, 20:50

    Boa noite,

    Tenho um campo numa tabela que corresponde à morada. O Formato da morada é Residência, Localidade, Código Postal, Concelho.
    O valor que quero obter é a Localidade mas tenho de ir buscar o valor a partir da direita pois a partir da esquerda pode ser variável.

    Exemplo:

    CASOEIRAS/IASFA RUA DO LICEU, Nº 18, OEIRAS, 2780-061, OEIRAS (tem 4 vírgulas)

    AV DO BRASIL 274 2 D, LISBOA, 1700-00, LISBOA (tem 3 vírgulas)

    com a expressão que estou a usar na consulta () obtenho respetivamente:

    Nº 18, OEIRAS, 2780-061, OEIRAS

    LISBOA, 1700-00, LISBOA

    Isto acontece pk é colocada uma vírgula antes do nº da porta, no 1º exemplo.

    Se começar pela direita, quero o valor entre a 2ª e a 3ª vírgula... mas isso é o que não tenho conseguido
    vieirasoft
    vieirasoft
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7305
    Registrado : 11/05/2010

    [Resolvido]Obter parte de morada num campo calculado em consulta Empty Re: [Resolvido]Obter parte de morada num campo calculado em consulta

    Mensagem  vieirasoft em 1/12/2018, 20:53

    Utilizea função Right

    Veja exemplos:

    Dim AnyString, MyStr
    AnyString = "Hello World" ' Define string.
    MyStr = Right(AnyString, 1) ' Returns "d".
    MyStr = Right(AnyString, 6) ' Returns " World".
    MyStr = Right(AnyString, 20) ' Returns "Hello World".
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Obter parte de morada num campo calculado em consulta Empty Re: [Resolvido]Obter parte de morada num campo calculado em consulta

    Mensagem  ahteixeira em 1/12/2018, 23:59

    Olá a todos,

    Artur, talvez seja melhor mostrar como está a fazer atualmente.

    Outra alternativa à sugestão do colega Vieira, talvez se obtenha facilmente com as funções nativas do Access:

    InStrRev
    Mid


    Abraço a todos
    avatar
    Ricardo84
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 18/01/2014

    [Resolvido]Obter parte de morada num campo calculado em consulta Empty Re: [Resolvido]Obter parte de morada num campo calculado em consulta

    Mensagem  Ricardo84 em 2/12/2018, 00:18

    Boa noite.

    É mesmo com as funções nativas que estou a experimentar.

    Localidade: Meio([morada];EmCad(EmCad([morada];",");[morada];",")+2)

    Valor original:

    CASOEIRAS/IASFA RUA DO LICEU, Nº 18, OEIRAS, 2780-061, OEIRAS (esta morada tem 4 vírgulas)

    Valor retornado:

    Nº 18, OEIRAS, 2780-061, OEIRAS (corresponde ao valor a seguir à 1ª vírgula)

    Valor original:

    AV DO BRASIL 274 2 D, LISBOA, 1700-00, LISBOA (esta morada tem 3 vírgulas)

    Valor retornado:

    LISBOA, 1700-00, LISBOA (corresponde ao valor a seguir à 1ª vírgula)

    Como disse anteriormente, devia começar da direita e obter o valor a seguir à 2ª vírgula e anterior à 3ª...

    Agora estou a experimentar

    Expr2: Esquerda([morada];InStrRev([morada];",")-1)

    retorna:

    CASOEIRAS/IASFA RUA DO LICEU, Nº 18, OEIRAS, 2780-061 (falta ", OEIRAS")
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Obter parte de morada num campo calculado em consulta Empty Re: [Resolvido]Obter parte de morada num campo calculado em consulta

    Mensagem  ahteixeira em 4/12/2018, 12:06

    Olá Artur Pinheiro,

    Fiz um pequeno exemplo para demonstrar como pode obter os dados.
    [Resolvido]Obter parte de morada num campo calculado em consulta 037

    Código utilizado:
    Código:
    Private Sub txtString_AfterUpdate()
    'ahteixeira 2018 para MaximoAccess
    Dim sTmp$, tam%, pos%

    Me.p1 = "": Me.p2 = "": Me.p3 = "": Me.resto = ""  'limpa campos
    If IsNull(Me.txtString) Then Exit Sub 'verifica se está vazio

    sTmp = Me.txtString
    tam = Len(sTmp & "") 'tamanho do campo
        
        If tam > 0 Then 'atraves do tamanho verifica se está preenchido (maior que zero)
            
            pos = InStrRev(sTmp, ",") 'pesquisa primeira virgula
            If pos > 0 Then
                Me.p1 = Trim(Mid(sTmp, pos + 1))
                sTmp = Left(sTmp, pos - 1)
            End If
            
            pos = InStrRev(sTmp, ",") 'pesquisa segunda virgula
            If pos > 0 Then
                Me.p2 = Trim(Mid(sTmp, pos + 1))
                sTmp = Left(sTmp, pos - 1)
            End If
            
            pos = InStrRev(sTmp, ",") 'pesquisa terceira virgula
            If pos > 0 Then
                Me.p3 = Trim(Mid(sTmp, pos + 1))
                sTmp = Left(sTmp, pos - 1)
                Me.resto = sTmp
            End If
        End If
    End Sub

    Abraço a todos
    Anexos
    [Resolvido]Obter parte de morada num campo calculado em consulta AttachmentObterParteMorada.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (21 Kb) Baixado 12 vez(es)
    avatar
    Ricardo84
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 18/01/2014

    [Resolvido]Obter parte de morada num campo calculado em consulta Empty Re: [Resolvido]Obter parte de morada num campo calculado em consulta

    Mensagem  Ricardo84 em 22/12/2018, 11:52

    Bom dia,

    ahteixeira, é isso msm que queria. funciona na perfeição, mesmo após ter adaptado à minha BD.

    Obrigado e boas festas
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Obter parte de morada num campo calculado em consulta Empty Re: [Resolvido]Obter parte de morada num campo calculado em consulta

    Mensagem  ahteixeira em 22/12/2018, 23:11

    Olá Artur Pinheiro, fico feliz por ter ajudado!

    Obrigado pelo retorno, o fórum agradece.

    Abraço a todos com votos de Boas Festas

      Data/hora atual: 26/10/2020, 23:59