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]Passar valores de uma ListBox para uma String sem duplicados

    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 306
    Registrado : 28/10/2010

    [Resolvido]Passar valores de uma ListBox para uma String sem duplicados Empty [Resolvido]Passar valores de uma ListBox para uma String sem duplicados

    Mensagem  zcarloslopes em 19/6/2020, 16:19

    Boa tarde a todos,

    Venho mais uma vez pedir a vossa ajuda.

    Uso o código abaixo para pegar os valores de uma ListBox e passar para uma String separdos por ";".
    Código:
    Dim i As Integer, S As String

    If Me.MinhaListBox.ListCount > 0 Then
        
        With Me.MinhaListBox
            For i = 0 To .ListCount - 1
                S = S & .ItemData(i) & "; "
            Next
        End With
              
        S = Left(S, Len(S) - 2)
        
        Me.txtBox = S
        
    Else

    Me.txtBox = ""

    End If
    O que eu pretendo é que no caso de haverem items repetidos na ListBox, os mesmos fossem ignorados.

    Obrigado


    Última edição por zcarloslopes em 22/6/2020, 12:16, editado 2 vez(es)
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Passar valores de uma ListBox para uma String sem duplicados Empty Re: [Resolvido]Passar valores de uma ListBox para uma String sem duplicados

    Mensagem  ahteixeira em 19/6/2020, 16:32

    Olá Carlos,

    Não pode fazer uma consulta agrupar, nem que seja oculta da ListBox?
    Será que não resolvia?
    Tente montar pequeno exemplo para se compreender e testar a dúvida.

    Abraço
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 306
    Registrado : 28/10/2010

    [Resolvido]Passar valores de uma ListBox para uma String sem duplicados Empty Re: [Resolvido]Passar valores de uma ListBox para uma String sem duplicados

    Mensagem  zcarloslopes em 22/6/2020, 08:55

    Obrigado ahteixeira pelo retorno,

    O agrupar, assim como o SELECT DISTINCT não resolvem. A linha da ListBos resulta de uma consulta com 2 tabelas relacionadas de "1 para Todos", em que lista os dados da tabela "1", mas os critérios estão na tabela "Todos".
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Passar valores de uma ListBox para uma String sem duplicados Empty Re: [Resolvido]Passar valores de uma ListBox para uma String sem duplicados

    Mensagem  ahteixeira em 22/6/2020, 11:45

    Olá Carlos,

    Consegue montar um pequeno exemplo para se testar?

    Abraço
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 306
    Registrado : 28/10/2010

    [Resolvido]Passar valores de uma ListBox para uma String sem duplicados Empty Re: [Resolvido]Passar valores de uma ListBox para uma String sem duplicados

    Mensagem  zcarloslopes em 22/6/2020, 12:15

    Obrigado ahteixeira pelo retorno,

    Acabei por seguir uma nova abordagem com algumas reformulações. Fiz duas consulta em cascata, e na segunda já consegui agrupar.

    Outra forma de resolver seria pegar na String e retirar os duplicados

    Código:
    Function DeDupeString(ByVal sInput As String, Optional ByVal sDelimiter As String = "; ") As String '<---- Escolher Aqui o Delimitador

        Dim varSection As Variant
        Dim sTemp As String

        For Each varSection In Split(sInput, sDelimiter)
            If InStr(1, sDelimiter & sTemp & sDelimiter, sDelimiter & varSection & sDelimiter, vbTextCompare) = 0 Then
                sTemp = sTemp & sDelimiter & varSection
            End If
        Next varSection

        DeDupeString = Mid(sTemp, Len(sDelimiter) + 1)

    End Function

    Obrigado
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Passar valores de uma ListBox para uma String sem duplicados Empty Re: [Resolvido]Passar valores de uma ListBox para uma String sem duplicados

    Mensagem  ahteixeira em 22/6/2020, 12:23

    Olá Carlos,

    Que bom que resolveu, obrigado pelo feedback.

    Abraço

      Data/hora atual: 19/9/2020, 11:25