DUVIDA EM CONSULTA EM DUAS TABELAS

PERCIFILHO 20/06/2011 14:34:07
#377251
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.
ADHEL 20/06/2011 15:11:38
#377258
Resposta escolhida
Pecifilho
Coloca a estrutura das tabelas Produtos e Movimentos

Ps.Você conseguiu resolver a impressão dos relatórios de tópicos passados?
PERCIFILHO 20/06/2011 15:19:03
#377261
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).
ADHEL 20/06/2011 15:33:11
#377264
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í

PERCIFILHO 20/06/2011 16:23:55
#377268
Desculpe amigo, mas poderia me [Ô]decifrar[Ô] essa sql?
Não entendi muito bem o que ela faz, na verdade nunca utilizei dessa forma.

PEGUDO 20/06/2011 18:40:02
#377277
Veja este tópico: CONSULTA ENTRE TRÊS TABELAS

Acho que sua solução é o comando INNER JOIN
PERCIFILHO 21/06/2011 09:28:53
#377340
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.
PERCIFILHO 21/06/2011 12:56:29
#377374
Problema resolvido. Já consegui montar meu relatório do jeito que eu queria.
Valeu pelas ajudas.

Até mais.
Tópico encerrado , respostas não são mais permitidas