COMPRAR DUAS LISTVIEW

TIAGOVARETA 28/11/2012 14:43:01
#414962
Boas pessoal, tenho duas Listview[ô]s com várias colunas e queria verificar se existem registos com a coluna email repetida. Os email que não sejam repetidos ficariam checked.

Alguém me pode ajudar a fazer esta comparação?
KERPLUNK 28/11/2012 15:28:56
#414968
Como você preenche os grids? DataTable? é esse um caso clássico das incontáveis vantagens da POO
TIAGOVARETA 29/11/2012 08:20:07
#414995
Citação:

:
Como você preenche os grids? DataTable? é esse um caso clássico das incontáveis vantagens da POO



Eu utilizo:
Private myCON, myCON1 As MySql.Data.MySqlClient.MySqlConnection
Private myCMD As MySql.Data.MySqlClient.MySqlCommand
Private myDRR As MySql.Data.MySqlClient.MySqlDataReader
PEGUDO 29/11/2012 09:23:14
#415000
Resposta escolhida
Isso é questão de lógica de programação:
1º Criaria-se um loop entre as colunas email de cada ListView;
2º Atribuiria-se, a cada loop, a uma variável, ovalor da coluna da ListView1 e a outra variável, ovalor da coluna da ListView2;
3º Faria-se uma comparação entre as duas variáveis para certificar se são idênticas;
4º Se NÃO forem, seta a propriedade checked = True ao item das duas ListView.

Exemplo:
Obs: Estou supondo que as duas ListView têm quantidades iquais de emails. Caso contrário, você terá de criar um tratamento para isso.
Dim EmailDoListView1, EmailDoListView2 As String
Dim ItemList1, ItemList2 as ListViewItem

For A = 0 To ListView1.Items.Count - 1
ItemList1 = ListView1.Item(A)
ItemList2 = ListView2.Item(A)

EmailDoListView1 = ItemList1.SubItems(1).Text
EmailDoListView2 = ItemList2.SubItems(1).Text

If Not EmailDoList1 = EmailDoList2 Then
ItemList1.Checked = True
ItemList2.Checked = True
End If
Next

Outra coisa, no exemplo acima eu uso [txt-color=#0000f0].SubItems(1)[/txt-color]. Isso significa que, no meu exemplo, minha coluna de emails é a SEGUNDA coluna, então você deve colocar o index que corresponde a sua coluna de emails.
Bem é isso.
Espero ter ajudado.
TIAGOVARETA 30/11/2012 09:23:08
#415116
Citação:

:
Isso é questão de lógica de programação:
1º Criaria-se um loop entre as colunas email de cada ListView;
2º Atribuiria-se, a cada loop, a uma variável, ovalor da coluna da ListView1 e a outra variável, ovalor da coluna da ListView2;
3º Faria-se uma comparação entre as duas variáveis para certificar se são idênticas;
4º Se NÃO forem, seta a propriedade checked = True ao item das duas ListView.

Exemplo:
Obs: Estou supondo que as duas ListView têm quantidades iquais de emails. Caso contrário, você terá de criar um tratamento para isso.

Dim EmailDoListView1, EmailDoListView2 As String
Dim ItemList1, ItemList2 as ListViewItem

For A = 0 To ListView1.Items.Count - 1
ItemList1 = ListView1.Item(A)
ItemList2 = ListView2.Item(A)

EmailDoListView1 = ItemList1.SubItems(1).Text
EmailDoListView2 = ItemList2.SubItems(1).Text

If Not EmailDoList1 = EmailDoList2 Then
ItemList1.Checked = True
ItemList2.Checked = True
End If
Next

Outra coisa, no exemplo acima eu uso [txt-color=#0000f0].SubItems(1)[/txt-color]. Isso significa que, no meu exemplo, minha coluna de emails é a SEGUNDA coluna, então você deve colocar o index que corresponde a sua coluna de emails.
Bem é isso.
Espero ter ajudado.



Obrigado Pegudo pela resposta. Acho que entendi o código que indicou em cima.
No entanto cada listview tem valores diferentes. Para que possa perceber as 2 listview:
- Listview 2: Baseada na tabela (tb_contacto) de pedido de informações (formulairo) do meu site (BD MYSQL)
- Listview 1: Baseada na tabela (tb_pedidos_contactos) onde ponho os registos que já tirei da tabela (tb_contacto) do meu site e outros registos que tinha em excel, ou seja quando recebo um pedido de informações no site tenho de passar à mão (copy/paste) para esta tabela

O que queria fazer era comprar ambas as listview (tabelas) e se houvesse um registo na litview dos contactos do site que não estivesse na outra este registo ficava marcado para depois fazer uma consulta SQL e inserir automaticamente.
TIAGOVARETA 30/11/2012 10:39:22
#415122
Citação:

:
Isso é questão de lógica de programação:
1º Criaria-se um loop entre as colunas email de cada ListView;
2º Atribuiria-se, a cada loop, a uma variável, ovalor da coluna da ListView1 e a outra variável, ovalor da coluna da ListView2;
3º Faria-se uma comparação entre as duas variáveis para certificar se são idênticas;
4º Se NÃO forem, seta a propriedade checked = True ao item das duas ListView.

Exemplo:
Obs: Estou supondo que as duas ListView têm quantidades iquais de emails. Caso contrário, você terá de criar um tratamento para isso.

Dim EmailDoListView1, EmailDoListView2 As String
Dim ItemList1, ItemList2 as ListViewItem

For A = 0 To ListView1.Items.Count - 1
ItemList1 = ListView1.Item(A)
ItemList2 = ListView2.Item(A)

EmailDoListView1 = ItemList1.SubItems(1).Text
EmailDoListView2 = ItemList2.SubItems(1).Text

If Not EmailDoList1 = EmailDoList2 Then
ItemList1.Checked = True
ItemList2.Checked = True
End If
Next

Outra coisa, no exemplo acima eu uso [txt-color=#0000f0].SubItems(1)[/txt-color]. Isso significa que, no meu exemplo, minha coluna de emails é a SEGUNDA coluna, então você deve colocar o index que corresponde a sua coluna de emails.
Bem é isso.
Espero ter ajudado.



Tive outra ideia de como fazer, vou encerrar este tópico e vou criar outro mais especifico
Tópico encerrado , respostas não são mais permitidas