COMPARAR DUAS LISTVIEWS
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.
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.
Como faço para enviar um print da tela?
Um print da tela
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.
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.
acredito se vc utilizar duas tabelas e so fazer comparação um da outra e usa os list so para exibir !!
Vou verificar...
Até mais.
Até mais.
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
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
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.
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.
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.
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.
Tópico encerrado , respostas não são mais permitidas