COMPARACAO DE DOIS SELECTS.

BRUNODOPREDIO 14/07/2011 08:47:03
#379107
*
Mensagens: 31
Ver Perfil
Email
Mensagem pessoal (Online)

Comparação de Duas Listas
« em: 13 de Julho de 2011, 20:59 »

Citar
Modificar
Apagar

Olá boa tarde estou tentando fazer uma comparação de duas pesquisas.....

O problema eh que eu posso pesquisar por dois parametros em casa pesquisa.....se for venda pesquiso em uma tabela se for compra pesquiso em outra....

Estava tentando declarar a variavel da pesquisa fora do if e depois faria um for each row de cada pesquisa para comparar um pesquisa com outra........

mas se eu declaro fora ele não encontra os dados na for each e se eu declaro dentro do if não consigo fazer o for each dentro do for each pois ao sair do if ele naum encontra mais a variável.......pesquisei de varias maneiras na net mas naum estou encontrando solução

Código (vb.net): [Seleccione]
Dim puxaTipoOP = (From tOP In db.OP Where tOP.IdOP = txtIdOP.Text Select tOP.TipoOP).First()
[ô]Busca os itens Antigos, de acordo com seu tipo.
If puxaTipoOP = [Ô]VENDA[Ô] Then
Dim strItensAntigo = (From i In db2.RDR1 _
Where i.DocEntry = TxtPedSAP.Text _
Select i.LineNum, i.ItemCode, i.Dscription, i.Factor1, i.Factor2, i.Quantity).ToList()
Else
Dim strdocentry As String = (From d In db2.OPOR Where d.DocNum = TxtPedSAP.Text Select d.DocEntry).First()
Dim strItensAntigo = (From i In db2.POR1 _
Where i.DocEntry = strdocentry _
Select i.LineNum, i.ItemCode, i.Dscription, i.Factor1, i.Factor2, i.Quantity).ToList()
End If

[ô]PUXA OS ITENS DO NOVO PEDIDO DE ACORDO COM SEU TIPO.

If puxaTipoOP = [Ô]VENDA[Ô] Then
strItensNovo = (From i In db2.RDR1 _
Where i.DocEntry = txtNovoPedSAP.Text _
Select i)
Else
Dim strdocentry As String = (From d In db2.OPOR Where d.DocNum = txtNovoPedSAP.Text Select d.DocEntry).First()
strItensNovo = (From i In db2.POR1 _
Where i.DocEntry = strdocentry _
Select i)
End If

AQUI EU COMP ARARIA A PRIMEIRA LINHA do stritensAntigo COM todas as linhas do strItensNovo, a segunda do strItensAntigo com Todas do strItens novo, e assim sucessivamente.........

Alguem tem Alguma sugestão?

PEGUDO 15/07/2011 07:28:36
#379221
Resposta escolhida
Cara, veja se eu entendi sua dúvida: Você quer CADA linha da strItensAntigo com TODAS do strItensNovo para ver se houve alterações?

Se for isto, você tem duas opções:
1. Ou você coloca todas as linhas de strItensAntigo em uma ListBox e as da strItensNovo em outra, ambas Visible = True;
2. Ou você coloca, tanto a strItensAntigo quanto a strItensNovo, em duas collections distintas.

Daí, você faria um loop em cada linha da ListBox (ou Collection) da strItensNovo, verificando se houve alterações, em relação à strItensAntigo.

Se eu não tiver captado muito bem sua dúvida, por favor, poste um exemplo de como você quer que seu programa execute o código.
BRUNODOPREDIO 15/07/2011 09:44:10
#379235
Citação:

:
Cara, veja se eu entendi sua dúvida: Você quer CADA linha da strItensAntigo com TODAS do strItensNovo para ver se houve alterações?

Se for isto, você tem duas opções:
1. Ou você coloca todas as linhas de strItensAntigo em uma ListBox e as da strItensNovo em outra, ambas Visible = True;
2. Ou você coloca, tanto a strItensAntigo quanto a strItensNovo, em duas collections distintas.

Daí, você faria um loop em cada linha da ListBox (ou Collection) da strItensNovo, verificando se houve alterações, em relação à strItensAntigo.

Se eu não tiver captado muito bem sua dúvida, por favor, poste um exemplo de como você quer que seu programa execute o código.




Sim é este mesmo o meu intuito.

verificar se as duas listas[txt-color=#e80000] são iguais.[/txt-color]

Essa questão de listbox eu não sei como usar muito......irei dar uma pesquisada na net para ver se entendo melhor, mesmo meu select sendo de uma ou muitas linhas e de muitas colunas eu consigo usar listbox?
PEGUDO 15/07/2011 10:04:10
#379240
Cara, vou te passar um exemplo, mas aqui eu to vendo uma coluna só.
é só um exemplo didático, usando ADODB
[txt-color=#0000f0]Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADODB.Connection, RecSet [txt-color=#0000f0]As[/txt-color] RecosdSet
[txt-color=#0000f0]Dim[/txt-color] Duplicado [txt-color=#0000f0]As Boolean[/txt-color]
[txt-color=#007100][ô]Suponha que já fiz a conexão com o BD[/txt-color]
RecSet = C.Execute([txt-color=#e80000][Ô]SELECT nomes FROM tblFunconarios[Ô][/txt-color])

[txt-color=#007100][ô]Suponha, agora, que eu já tenha uma ListBox (visible = False) com vários nomes dentro dela[/txt-color]
[txt-color=#0000f0]While Not[/txt-color] RecSet.EOF
Duplicado = VerificaNome(RecSet([txt-color=#e80000][Ô]nome[Ô][/txt-color]).Value.ToString)

[txt-color=#0000f0]If[/txt-color] Duplicado = [txt-color=#0000f0]True Then[/txt-color]
[txt-color=#007100][ô]Grava no BD[/txt-color]
[txt-color=#0000f0]Else[/txt-color]
[txt-color=#007100][ô]Não grava no BD[/txt-color]
[txt-color=#0000f0]End If[/txt-color]
RecSet.MoveNext()
[txt-color=#0000f0]End While

__________________________________________________________________________________________________________________

Private Function[/txt-color] VerificaNome([txt-color=#0000f0]ByVal[/txt-color] QualNome [txt-color=#0000f0]As String[/txt-color])
[txt-color=#0000f0]For Each[/txt-color] Nome In ListBox1.Items
[txt-color=#0000f0]If[/txt-color] Nome = QualNome [txt-color=#0000f0]Then[/txt-color]
VerificaNome = [txt-color=#0000f0]True
Exit For
Else[/txt-color]
VerificaNome = [txt-color=#0000f0]False
End If
Next

Return[/txt-color] VerificaNome
[txt-color=#0000f0]End Function[/txt-color]

Lembrando que este é um exemplo didático de como você pode fazer para comparar valores
BRUNODOPREDIO 15/07/2011 10:10:53
#379242
Citação:

:
Cara, vou te passar um exemplo, mas aqui eu to vendo uma coluna só.
é só um exemplo didático, usando ADODB

[txt-color=#0000f0]Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADODB.Connection, RecSet [txt-color=#0000f0]As[/txt-color] RecosdSet
[txt-color=#0000f0]Dim[/txt-color] Duplicado [txt-color=#0000f0]As Boolean[/txt-color]
[txt-color=#007100][ô]Suponha que já fiz a conexão com o BD[/txt-color]
RecSet = C.Execute([txt-color=#e80000][Ô]SELECT nomes FROM tblFunconarios[Ô][/txt-color])

[txt-color=#007100][ô]Suponha, agora, que eu já tenha uma ListBox (visible = False) com vários nomes dentro dela[/txt-color]
[txt-color=#0000f0]While Not[/txt-color] RecSet.EOF
Duplicado = VerificaNome(RecSet([txt-color=#e80000][Ô]nome[Ô][/txt-color]).Value.ToString)

[txt-color=#0000f0]If[/txt-color] Duplicado = [txt-color=#0000f0]True Then[/txt-color]
[txt-color=#007100][ô]Grava no BD[/txt-color]
[txt-color=#0000f0]Else[/txt-color]
[txt-color=#007100][ô]Não grava no BD[/txt-color]
[txt-color=#0000f0]End If
End While

Private Function[/txt-color] VerificaNome([txt-color=#0000f0]ByVal[/txt-color] QualNome [txt-color=#0000f0]As String[/txt-color])
[txt-color=#0000f0]For Each[/txt-color] Nome In ListBox1.Items
[txt-color=#0000f0]If[/txt-color] Nome = QualNome [txt-color=#0000f0]Then[/txt-color]
VerificaNome = [txt-color=#0000f0]True
Exit For
Else[/txt-color]
VerificaNome = [txt-color=#0000f0]False
End If
Next

Return[/txt-color] VerificaNome
[txt-color=#0000f0]End Function[/txt-color]

Lembrando que este é um exemplo didático de como você pode fazer para comparar valores



é eu cheguei a entender este exemplo, vou dar uma pesquisada aqui talvez eu precise trabalhar com arrays, não conheço mto tbem mas vou pesquisar.....rsrsrsrssr
Porque o que quer é simples mas está acabando comigo, eu queria fazer dois selects e comparar se o [Ô]grid[Ô] ou seja as linhas e colunas (os dados delas) sejam identicas, se forem identicas retorna true senão retorna falso.

Mas Valeu, consegui entender que o melhor caminho é este mesmo!
Tópico encerrado , respostas não são mais permitidas