AJUDA EM CONSULTA

PERCIFILHO 02/06/2011 09:29:21
#375649
Bom dia a todos.
Gostaria de uma ajuda de vocês para uma consulta que preciso realizar.
Tenho 2 tabelas: Produtos e Saidas.
Campo da tabela de Produtos: codigo (tipo varchar).
Campos da tabela Saidas: codigo (tipo varchar) - data (tipo date).
Preciso consultar na tabela de produtos e encontrar as saidas dos mesmos na tabela de saidas.
Por exemplo:
Consulto na tabela Produtos e en contro o codigo 1.
Aí procuro na tabela Saidas e listo as saídas dele.
Quando acabar de listar as saídas desse produto, volta na tabela de Produtos e consulta o próximo código e lista as saídas dele, e assim por diante, dentro de um Loop.

Estou usando VB.NET com SQL Server.

Montei a sql desse jeito:

Dim cmdcadastro As SqlCommand
Dim drcadastro As SqlDataReader
cmdprodutos = New SqlCommand([Ô]Select * From Produtos Order by codigo[Ô], conexao)
drprodutos = cmdprodutos.ExecuteReader
Dim novalinha As Long = 120
Do While drpropdutos.Read
Dim cmdsaidas As SqlCommand
Dim drsaidas As SqlDataReader
cmdsaidas = New SqlCommand([Ô]Select * From Saidas Where codigo Like [ô][Ô] & drprodutos.Item([Ô]codigo[Ô]) & [Ô][ô][Ô], conexao)
[txt-color=#e80000] drsaidas = cmdsaidas.ExecuteReader[/txt-color] Do While drsaidas.Read
e.Graphics.DrawString(drsaidas.Item([Ô]data[Ô]) & Space(2) & CDbl(drsaidas.Item([Ô]codigo[Ô])).ToString.PadLeft(4) , New Font([Ô]Courier New[Ô], 10, FontStyle.Regular), Brushes.Black, 200, novalinha + 20)
novalinha = novalinha + 20
Loop
drsaidas.Close()
Loop
drprodutos.Close()
e.Graphics.DrawLine(Pens.Black, 1, novalinha + 30, 830, novalinha + 30)
conexao.Close()

Porém ocorre um erro na linha em destaque.
[Ô]Já existe um DataReader aberto associado ao Command que deve ser fechado primeiro.[Ô]
Só que não consegui resolver isso.

ADHEL 02/06/2011 09:59:04
#375655
Pelo que entendi

Try
Dim da As New SqlDataAdapter([Ô]Select s. Data,p. Codigo from saidas s, produtos p Where s. codigo = p . codigo order by codigo [Ô], Conexao)
Dim dt As New DataTable

da.Fill(dt)
With DataGridView1
.DataSource = dt

End With
DataGridView1.ClearSelection()


Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
End Sub

Veja se é isso e testa aí
PERCIFILHO 02/06/2011 13:00:30
#375676
Resolvido. Obrigado pela ajuda, mas tentei de outra maneira e consegui fazer o que queria.
Valeu. Vou encerrando...
Até mais.
Tópico encerrado , respostas não são mais permitidas