DUVIDA EM CONSULTA EM DUAS TABELAS
Boa tarde, amigos.
Preciso realizar uma consulta em duas tabelas e imprimir os resultados obtidos.
Tenho duas tabelas: Produtos e Movimentos.
Preciso percorrer a tabela Produtos [Ô]pegar[Ô] o primeiro produto encontrado
e procurar na tabela Movimentos as saÃdas correspondentes a esse produto e depois imprimir
esses registros.
Quando terminar os registros do primeiro produto, vou pular uma linha e voltar à tabela Produtos,
[Ô]pegar[Ô] o próximo produto e pesquisar na tabela Movimentos as saÃdas correspondentes a ele e assim
por diante, até quando for final da tabela Produtos.
Quando trabalhava com VB 6.0 eu fazia assim:
sqlprodutos = [Ô]Select * From Produtos Order By codigo[Ô]
Set rsprodutos = db.OpenRecordset(sqlprodutos)
Do Until rsprodutos.EOF
sqlmov = [Ô]Select * From Movimentos Where codigo Like [ô][Ô] & rsprodutos([Ô]codigo[Ô]) & [Ô][ô] And IsNull(saida)[Ô]
Set rsmov = db.OpenRecordset(sqlmov)
Do Until rsmov.EOF
Print #1, Tab(1); [Ô][Ô]; Tab(16); Format(rsmov([Ô]qtd[Ô]), [Ô]@@[Ô]); Tab(25); rsmov([Ô]esp[Ô]); Tab(35); Format$(Format$(rsmov([Ô]peso[Ô]), [Ô]###,##0.00[Ô]), [Ô]@@@@@@@@@[Ô])
rsmov.MoveNext
Loop
No VB.Net estou sem saber como realizar esse tipo de tarefa.
Alguém pode me ajudar a fazer isso?
Até mais.
Preciso realizar uma consulta em duas tabelas e imprimir os resultados obtidos.
Tenho duas tabelas: Produtos e Movimentos.
Preciso percorrer a tabela Produtos [Ô]pegar[Ô] o primeiro produto encontrado
e procurar na tabela Movimentos as saÃdas correspondentes a esse produto e depois imprimir
esses registros.
Quando terminar os registros do primeiro produto, vou pular uma linha e voltar à tabela Produtos,
[Ô]pegar[Ô] o próximo produto e pesquisar na tabela Movimentos as saÃdas correspondentes a ele e assim
por diante, até quando for final da tabela Produtos.
Quando trabalhava com VB 6.0 eu fazia assim:
sqlprodutos = [Ô]Select * From Produtos Order By codigo[Ô]
Set rsprodutos = db.OpenRecordset(sqlprodutos)
Do Until rsprodutos.EOF
sqlmov = [Ô]Select * From Movimentos Where codigo Like [ô][Ô] & rsprodutos([Ô]codigo[Ô]) & [Ô][ô] And IsNull(saida)[Ô]
Set rsmov = db.OpenRecordset(sqlmov)
Do Until rsmov.EOF
Print #1, Tab(1); [Ô][Ô]; Tab(16); Format(rsmov([Ô]qtd[Ô]), [Ô]@@[Ô]); Tab(25); rsmov([Ô]esp[Ô]); Tab(35); Format$(Format$(rsmov([Ô]peso[Ô]), [Ô]###,##0.00[Ô]), [Ô]@@@@@@@@@[Ô])
rsmov.MoveNext
Loop
No VB.Net estou sem saber como realizar esse tipo de tarefa.
Alguém pode me ajudar a fazer isso?
Até mais.
Pecifilho
Coloca a estrutura das tabelas Produtos e Movimentos
Ps.Você conseguiu resolver a impressão dos relatórios de tópicos passados?
Coloca a estrutura das tabelas Produtos e Movimentos
Ps.Você conseguiu resolver a impressão dos relatórios de tópicos passados?
Consegui, sim, encontrei um exemplo e consegui adaptá-lo ao meu projeto e graças a Deus funcionou perfeitamente. Só falta agora esse relatório que estou tentando fazer.
As estruturas das tabelas são as seguintes:
Tabela Produtos
Campos: Codigo (tipo nchar), Nome (tipo varchar)
Tabela Movimentos
Campos: Codigo (tipo nchar), Saida (tipo date), Quantidade (tipo varchar).
As estruturas das tabelas são as seguintes:
Tabela Produtos
Campos: Codigo (tipo nchar), Nome (tipo varchar)
Tabela Movimentos
Campos: Codigo (tipo nchar), Saida (tipo date), Quantidade (tipo varchar).
Tenta ssim
Dim da As New SqlDataAdapter([Ô]select p. codigo,p. nome ,m. quantidade,m. Saida from produtos p,movimentos m where p. codigo = m. codigo[Ô], CNN)
Dim dt As New DataTable
da.Fill(dt)
With dgv
.DataSource = dt
End With
agora se voce quiser somar a quantidade de cada produto
Dim da As New SqlDataAdapter([Ô]select p. codigo,p. nome, sum(m. quantidade),m. Saida from produtos p,movimentos m where p. codigo = m. codigo group by m. codigo[Ô], CNN)
Dim dt As New DataTable
da.Fill(dt)
With dgv
.DataSource = dt
End With
Agora eu não tenho certeza,EU ACHO que a soma só será efetuada se o campo quantidade mudar de varchar para integer
testa aÃ
Dim da As New SqlDataAdapter([Ô]select p. codigo,p. nome ,m. quantidade,m. Saida from produtos p,movimentos m where p. codigo = m. codigo[Ô], CNN)
Dim dt As New DataTable
da.Fill(dt)
With dgv
.DataSource = dt
End With
agora se voce quiser somar a quantidade de cada produto
Dim da As New SqlDataAdapter([Ô]select p. codigo,p. nome, sum(m. quantidade),m. Saida from produtos p,movimentos m where p. codigo = m. codigo group by m. codigo[Ô], CNN)
Dim dt As New DataTable
da.Fill(dt)
With dgv
.DataSource = dt
End With
Agora eu não tenho certeza,EU ACHO que a soma só será efetuada se o campo quantidade mudar de varchar para integer
testa aÃ
Desculpe amigo, mas poderia me [Ô]decifrar[Ô] essa sql?
Não entendi muito bem o que ela faz, na verdade nunca utilizei dessa forma.
Não entendi muito bem o que ela faz, na verdade nunca utilizei dessa forma.
Veja este tópico: CONSULTA ENTRE TRÊS TABELAS
Acho que sua solução é o comando INNER JOIN
Acho que sua solução é o comando INNER JOIN
Bom dia a todos!!!
Caro colega Adhel, esse comando sql que você passou, funcionou certinho, apesar de que seu exemplo me parece ser para DataGridView, então eu adaptei para impressão e deu certo, só que na impressão, saem todos os registros [Ô]seguidos[Ô], eu gostaria de, quando mudasse o produto, pulasse uma linha para começar imprimir os registros do próximo.
Tem alguma idéia de como fazer isso?
Até mais.
Caro colega Adhel, esse comando sql que você passou, funcionou certinho, apesar de que seu exemplo me parece ser para DataGridView, então eu adaptei para impressão e deu certo, só que na impressão, saem todos os registros [Ô]seguidos[Ô], eu gostaria de, quando mudasse o produto, pulasse uma linha para começar imprimir os registros do próximo.
Tem alguma idéia de como fazer isso?
Até mais.
Problema resolvido. Já consegui montar meu relatório do jeito que eu queria.
Valeu pelas ajudas.
Até mais.
Valeu pelas ajudas.
Até mais.
Tópico encerrado , respostas não são mais permitidas