AJUDA EM CONSULTA
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.
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.
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Ã
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Ã
Resolvido. Obrigado pela ajuda, mas tentei de outra maneira e consegui fazer o que queria.
Valeu. Vou encerrando...
Até mais.
Valeu. Vou encerrando...
Até mais.
Tópico encerrado , respostas não são mais permitidas