COMPARACAO DE DOIS SELECTS.
Mensagens: 31
Ver Perfil
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?
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.
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?
é 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
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!