MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Deletar todos os itens selecionador na ListBox

    Compartilhe

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 19
    Registrado : 20/11/2015

    [Resolvido]Deletar todos os itens selecionador na ListBox

    Mensagem  Ednardo em Sex 30 Mar 2018, 02:03

    Boa Noite, preciso de uma ajuda, tenho uma listbox em que preciso remover apenas os itens selecionados, porém quando vou percorrer os itens selecionados ao excluir o primeiro os demais perdem a seleção e acaba excluindo apenas um, alguem sabe como posso resolver isso?

    For Each Obj In Me.LstItens.ItemsSelected
    Me.LstItens.RemoveItem (Obj)
    Next Obj

    For i = 0 To Me.LstItens.ListCount - 1
    If Me.LstItens.Selected(i) = True Then
    Me.LstItens.RemoveItem (i)
    End If
    Next i

    Ambos os casos quando exclui o primeiro item os demais perdem a seleção e o for para, como posso fazer para contornar isso?
    avatar
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1940
    Registrado : 13/04/2012

    Re: [Resolvido]Deletar todos os itens selecionador na ListBox

    Mensagem  Fernando Bueno em Sex 30 Mar 2018, 17:19

    Boa tarde;

    Talvez assim..

    Código:
    Dim x As Variant
    Dim y As String
    For Each x In Me!Lista0.ItemsSelected
    CurrentDb.Execute "DELETE * FROM tbl_exemplo WHERE Id = " & Me!Lista0.Column(0, x) & ";"
    y = True
    Next
    If y = True Then
       MsgBox "Concluido", vbInformation, "Aviso"
       Me!Lista0.Requery
       End If


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]

    Ednardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 19
    Registrado : 20/11/2015

    Re: [Resolvido]Deletar todos os itens selecionador na ListBox

    Mensagem  Ednardo em Sex 30 Mar 2018, 17:49

    Sim daria certo se a base de dados fosse uma tabela, seria bem simples, porém a base de dados é uma lista de valores os quais eu informo os valores com o método "AddItem". Isso acontece talvez por uma falha do VB que perde toda a seleção da ListBox ao remover um item qualquer, a solução que encontrei foi salvar os índices dos itens selecionados em uma Matriz e na sequência deletar usando a Matriz, o código ficou da seguinte maneira...

    Código:

    Dim Obj As Variant
    Dim Matriz() As Boolean
    Dim i As Integer
    Dim x As Long

    i = 0
    For Each Obj In Me.LstItens.ItemsSelected 'Percorre toda a lista verificando se há itens selecionados
         i = i + 1
    Next Obj
                    
    If i > 0 Then 'Caso existam itens selecionados executa o procedimento
         i = Me.LstItens.ListCount - 1
         For x = 0 To i 'Percorre toda a lista
              ReDim Preserve Matriz(x) 'Reserva mais um espaço de armazenamento na matriz
              Matriz(x) = Me.LstItens.Selected(x) 'Salva na matriz o status de seleção do índice se True ou False
         Next x
         Do While i <> -1 'Percorre toda a lista novamente verificando quais os índices são True
              If Matriz(i) = True Then
                   Me.LstItens.RemoveItem (i) 'Se o índice for True remove o mesmo da lista
              End If
              i = i - 1 'Retrocede um item, perceba que percorremos a lista deletando os registros selecionados de trás para frente
         Loop
    End If

    Espero ter ajudado a futuros colegas que tenha a mesma dificuldade que eu tive, pois talvez não seja possível solucionar na internet por isso tive que me virar da forma antiga "Lógica de Programação".
    avatar
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1940
    Registrado : 13/04/2012

    Re: [Resolvido]Deletar todos os itens selecionador na ListBox

    Mensagem  Fernando Bueno em Sab 31 Mar 2018, 02:37

    Boa noite;

    Legal que solucionou agradecemos o retorno.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]

      Data/hora atual: Ter 19 Jun 2018, 01:45