MaximoAccess

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

Obrigado

Administração do MaximoAccess


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.

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

    Personalizar caixa de listagem

    biligo
    biligo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 226
    Registrado : 10/04/2014

    Personalizar caixa de listagem Empty Personalizar caixa de listagem

    Mensagem  biligo 3/12/2014, 17:05

    Boas pessoal,

    Bom tenho um relatório ao qual gostaria de personalizar uma caixa de listagem, mas gostaria que os valores fossem se dividindo em colunas
    por exemplo, as caixas de combinação possuem um critério para limitar as linhas exibidas mas deve se utilizar uma barra de rolagem para visualizar os outros campos,
    gostaria que a caixa de listagem "manda-se" os valores não visualizados para um segunda coluna e assim por diante.

    Sei que esta meio confuso mas segue uma imagem para melhores noções

    Personalizar caixa de listagem R8fgwh

    Sei que deve haver algum tópico sobre este assunto pois este método é utilizado por muitas empresas, mas realmente não encontrei em lugar algum algo sobre isto,
    se me puderem indicar um caminho para resolução agradeço.
    criquio
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11228
    Registrado : 30/12/2009

    Personalizar caixa de listagem Empty Re: Personalizar caixa de listagem

    Mensagem  criquio 3/12/2014, 17:26

    Acredito que esteja carregando essa listbox na origem dela, usando SQL, certo? Para fazer isso que está imaginando, a melhor forma será carregar os dados de modo desvinculado, utilizando um Recordset para carregar os dados e uma variável para controlar o número de colunas. Algo como:

    Dim rs As Recordset, N As Integer, Colunas As String

    Set rs = CurrentDb.OpenTable("SELECT nomeDoCampo FROM nomeDaTabela WHERE seuFiltroAqui")

    rs.MoveFirst

    Do While Not rs.EOF

       if N < 3 Then
           N = N + 1
       Else
           N = 1
       End If

       If N = 1 Then
           Colunas = rs("NomeDoCampo")
       Else
           Colunas = Colunas & ";" & rs("NomeDoCampo")
       End If

       Me.nomeDaListBox.AddItem Colunas

    rs.MoveNext

    rs.Close
    Set rs = Nothing

    Estou supondo que queira uma lista com 3 colunas. Para alterar o número de colunas, altere todos os números 3 acima para o número desejado.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    biligo
    biligo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 226
    Registrado : 10/04/2014

    Personalizar caixa de listagem Empty Re: Personalizar caixa de listagem

    Mensagem  biligo 3/12/2014, 18:33

    Boas Criquio,

    Funcionou, com um pequeno erro, me são enviados 3 vezes o valor de cada campo e em alguns casos este valor fica nulo me gerando um
    campo "vazio" em branco ocupando apenas o espaço na coluna.

    Saberias como resolver isto?

    E apenas para questão de estética, não me é apresentada a caixa de seleção é possivel readicionala?
    biligo
    biligo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 226
    Registrado : 10/04/2014

    Personalizar caixa de listagem Empty Re: Personalizar caixa de listagem

    Mensagem  biligo 3/12/2014, 19:06

    Apenas para complementar,

    Estava a visualizar em um relatório com pouco espaço para distinguir as coisas. Recriei em um formulário de testes e vi que os dados me são enviados para a caixa de combinação da seguinte forma:

    1 linha
    1 e 2 linha
    1, 2 e 3 linha
    4 linha
    4 e 5 linha
    4, 5 e 6 linha

    e assim por diante, sendo que a linha é o valor da tabela.
    tentei fazer alguns testes alterando os valores do seu código mas não obtive exito
    criquio
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11228
    Registrado : 30/12/2009

    Personalizar caixa de listagem Empty Re: Personalizar caixa de listagem

    Mensagem  criquio 3/12/2014, 19:26

    Só faltou condicionar o AddItem para entrar em ação apenas quando N = 3:

    Código:
    Dim rs As Recordset, N As Integer, Colunas As String

    Set rs = CurrentDb.OpenTable("SELECT nomeDoCampo FROM nomeDaTabela WHERE seuFiltroAqui")

    rs.MoveFirst

    Do While Not rs.EOF

        if N < 3 Then
            N = N + 1
        Else
            N = 1
        End If

        If N = 1 Then
            Colunas = rs("NomeDoCampo")
        Else
            Colunas = Colunas & ";" & rs("NomeDoCampo")
        End If

        If N = 3 Or rs.EOF Then
            Me.nomeDaListBox.AddItem Colunas
        End If

    rs.MoveNext

    rs.Close
    Set rs = Nothing


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    biligo
    biligo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 226
    Registrado : 10/04/2014

    Personalizar caixa de listagem Empty Re: Personalizar caixa de listagem

    Mensagem  biligo 3/12/2014, 22:59

    Boas criquio,

    Obrigado, agora esta funcionando mas com um porem, as linhas da caixa de listagem devem sempre ser completamente preenchidas ao contrario não sera adicionado a linha.
    Por exemplo, se tenho 20 itens na minha tabela base e minha lista contem 3 colunas: 3/20 = 6 sobra 2 estes 2 não serão adicionados a lista e os 18 restantes distribuídos nas colunas.
    É possível retornar estes valores em linhas não completamente preenchidas?

    E voltarei a insistir em lhe perguntar se é possível retornar esta caixa de listagem em múltipla escolha, achei este código,

    Dim b As Byte b = Forms("Order Entry").Controls("Country").MultiSelect = 1

    Adaptei ao meu caso mas não me é retornado os controles de seleção, testei adicionando ele logo após a adição dos itens na coluna e antes também mas não me é retornado nada.
    criquio
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11228
    Registrado : 30/12/2009

    Personalizar caixa de listagem Empty Re: Personalizar caixa de listagem

    Mensagem  criquio 3/12/2014, 23:48

    Tente tirando o "Or rs.EOF". Quanto à multiseleção basta configurar nas propriedades da própria listbox.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.


      Data/hora atual: 25/2/2021, 18:45