COMPARAR DUAS LISTVIEWS

PERCIFILHO 05/01/2011 10:54:58
#361184
Bom dia, amigos.
Vou tentar explicar o que eu preciso fazer.
Tenho 2 ListViews -> List1 e List2.
A List1 é preenchida com etapas de determinados processos realizados nos produtos da empresa, dados que estão contidos na tabela ETAPAS.
Pois bem, quando eu pesquisar um produto já cadastrado, preciso mostrar na List2 as etapas que já foram cadastradas para esse produto, e na List1 preciso mostrar os registros da tabela ETAPAS, só que excluindo os que já estiverem na List2, mostrando, portanto, apenas as etapas dos processos que o produto ainda não passou.
Não sei se consegui explicar bem. Se alguém puder me salvar, agradeço.

Até mais.
PERCIFILHO 05/01/2011 14:59:12
#361220
Como faço para enviar um print da tela?
PERCIFILHO 05/01/2011 15:02:16
#361222
Um print da tela
PERCIFILHO 05/01/2011 15:06:31
#361223
Aí está a tela do projeto.
Na List1 estão as etapas cadastradas e na List2 estão as etapas nas quais o produto já passou
O que eu preciso é:
Quando seleciono um produto, tenho que mostrar as etapas que o produto já passou na List2.
Preciso comparar as duas ListViews. Se na List2 já tem CORTE, DOBRA, então devo excluir CORTE, DOBRA da List1.
Assim, não deixa a possibilidade de o usuário escolher a mesma etapa que já foi processada no produto.
Deu para entender?

Até mais.
INFOSISTEMAS 05/01/2011 15:52:10
#361225
acredito se vc utilizar duas tabelas e so fazer comparação um da outra e usa os list so para exibir !!
PERCIFILHO 05/01/2011 16:02:17
#361231
Vou verificar...

Até mais.
PERCIFILHO 05/01/2011 16:15:41
#361235
O meu problema é que quero remover a linha do item na List1 e não consigo fazer isso.

Eis o meu código (DAO)

sqletapa = [Ô]SELECT * FROM Etapas ORDER BY descricao[Ô]
Set rsetapa = db.OpenRecordset(sqletapa)
While Not rsetapa.EOF
Set linha = Lst1.ListItems.Add(, , rsetapa([Ô]etapa[Ô]))
sqletapasconfirmadas = [Ô]SELECT * FROM DescricaoEtapas WHERE etapa LIKE [ô][Ô] & rsetapa([Ô]etapa[Ô]) & [Ô][ô][Ô]
Set rsetapasconfirmadas = db.OpenRecordset(sqletapasconfirmadas)
If Not rsetapasconfirmadas.EOF Then
Set linha = Lst2.ListItems.Add(, , rsetapasconfirmadas([Ô]etapa[Ô])) [ô] até aqui tudo certo

[ô] esta linha é que é o x da questão
----> Lst1.ListItems.Remove ......
[ô] não sei como fazer para remover a linha da List1. Como saber qual o index da linha a ser removida?

End If
rsetapa.MoveNext
Wend
PERCIFILHO 05/01/2011 16:18:58
#361236
Quando a gente remove uma linha numa ListView, selecionando a linha que se quer remover, eu sei que é assim

LstView.ListItems.Remove (LstView.SelectedItem.Index)

Porém, no meu caso, a linha não está sendo selecionada, por isso é que estou meio perdido.
Pode ser que a solução seja fácil, porém para mim está sendo um bicho de 7 cabeças. Estou pirando.

Até mais.
PERCIFILHO 06/01/2011 07:43:05
#361306
Caro colega, resolvi da seguinte forma:
Não sei se é uma gambiarra, porém deu resultado, então aí vai:

[ô] consultas sql nas duas tabelas para preencher as ListViews
sqletapa = [Ô]SELECT * FROM Etapas ORDER BY etapa[Ô]
Set rsetapa = db.OpenRecordset(sqletapa)
sqletapasconfirmadas = [Ô]SELECT * FROM EtapasConfirmadas ORDER BY etapa[Ô]
Set rsetapasconfirmadas = db.OpenRecordset(sqletapasconfirmadas)
[ô] preenche a List1 (etapas)
While Not rsetapa.EOF
Set linha = LstEtapas.ListItems.Add(, , rsetapa([Ô]etapa[Ô]))
rsetapa.MoveNext
Wend
[ô]preenche a List2 (etapas confirmadas)
While Not rsetapasconfirmadas.EOF
Set linha = LstEtapasConfirmadas.ListItems.Add(, , rsetapasconfirmadas([Ô]etapa[Ô]))
rsetapasconfirmadas.MoveNext
Wend

checar:
[ô] percorre a List1
For i = 1 To LstEtapas.ListItems.Count
[ô] procura na List2 pelo texto do item da List1
Set procura = LstEtapasConfirmadas.FindItem(LstEtapas.ListItems(i).Text)
[ô] se encontrou, remove o item da List1
If Not procura Is Nothing Then
LstEtapas.ListItems.Remove (i)
[ô]volta para percorrer todo o List1 novamente
GoTo checar
End If
Next

Muito obrigado pelas dicas, valeu mesmo.

Até mais.
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas