Select com Mestre Detalhe
Boa Tarde, pessoal estou com um problema e a vários dias tentando solucionar e não consigo e o seguinte:
Tenho a Tabela ESTOQUE_PRODUTOS com os seguinte campos: ID_ESTOQUE, ID_PRODUTO, SALDO, SALDO_RESERVA aonde ID_ESTOQUE E ID_PRODUTOS são chaves primarias e secundarias da tabela fazendo referencia as tabelas PRODUTO E ESTOQUE , e preciso de um select que traga só os produtos que não estão em um estoque para pode inserir depois.
Tenho a Tabela ESTOQUE_PRODUTOS com os seguinte campos: ID_ESTOQUE, ID_PRODUTO, SALDO, SALDO_RESERVA aonde ID_ESTOQUE E ID_PRODUTOS são chaves primarias e secundarias da tabela fazendo referencia as tabelas PRODUTO E ESTOQUE , e preciso de um select que traga só os produtos que não estão em um estoque para pode inserir depois.
Kledson Campos
Curtidas 0
Respostas
Marlon Minotti
02/10/2014
Não entendi muito bem sua pergunta, pode ser mais específico? Me parece que você tem uma tabela Produtos, Estoque, e Estoque_Produto. Primeiro, qual a finalidade da tabela Estoque_Produto? Segundo, especifique melhor sua pergunta.
GOSTEI 0
Kledson Campos
02/10/2014
Bom Marlon, a tabela estoque_produtos ficam armazenado os produtos por estoque aonde trabalho com vários estoques e nessa tabela fica os produtos que pertencem aos estoques.
ex: tenho estoque vendas, deposito e posso ter produtos em vendas que não tem em estoque e ai vai como posso ter uma quantidade de um certo produto no deposito e outro na no estoque vendas.
ex: tenho estoque vendas, deposito e posso ter produtos em vendas que não tem em estoque e ai vai como posso ter uma quantidade de um certo produto no deposito e outro na no estoque vendas.
GOSTEI 0
Marlon Minotti
02/10/2014
Tá! com base no que você me disse, o que exatamente você precisa? De um select que faça o que?
GOSTEI 0
Kledson Campos
02/10/2014
No cadastro de estoque tem uma grid que mostrar os produtos do estoque e em baixo tem um botão de incluir os produtos no estoque, ai ao clicar abre um form que pesquiso os produtos que falta incluir no estoque, por isso que falei que precisaria um select aonde mostre só os produtos que não estão no estoque especifico.[img:descricao=Print da Tela de cadastro e de pesquisa de produto. ]http://arquivo.devmedia.com.br/forum/imagem/315270-20141002-204125.jpg[/img]
GOSTEI 0
Ricardo
02/10/2014
No cadastro de estoque tem uma grid que mostrar os produtos do estoque e em baixo tem um botão de incluir os produtos no estoque, ai ao clicar abre um form que pesquiso os produtos que falta incluir no estoque, por isso que falei que precisaria um select aonde mostre só os produtos que não estão no estoque especifico.[img:descricao=Print da Tela de cadastro e de pesquisa de produto. ]http://arquivo.devmedia.com.br/forum/imagem/315270-20141002-204125.jpg[/img]
Vamos ver se eu entendi para poder te ajudar.
Você tem um tabela de cadastro de produtos e tem uma tabela do estoque. Você quer saber quais os produtos que não estão inseridos da tabela estoque para poder inseri-los é isso?
GOSTEI 0
Kledson Campos
02/10/2014
Isso, preciso saber quais os produtos que não estão no estoque para pode inserir.
GOSTEI 0
Ricardo
02/10/2014
Não vou testar o código, testa aí, mas seguindo um lógica rápida...
Digamos que vc tem a tabela produtos e a tabela estoque.
Produtos -> Id_produto, produto
Estoque -> Id_produto, qtd
While not produto.eof do
begin
with estoque do
begin
close;
sql.clear;
sql.add('select id_produto from estoque where id_produto ='+ quotestr(produto.fieldbyname('id_produto').value));
open;
if produto.recordcount = 0 then
begin
showmessage('Produto não está em estoque e será cadastrado...');
estoque.append;
estoque.fieldbyname(id_produto).asinteger := produto.fieldbyname('id_produto').value;
estoque.fieldbyname(qtd).asinteger := você trata a forma como vai inserir do jeito que achar melhor...
estoque.post;
end;
end;
produto.next;
end;
Digamos que vc tem a tabela produtos e a tabela estoque.
Produtos -> Id_produto, produto
Estoque -> Id_produto, qtd
While not produto.eof do
begin
with estoque do
begin
close;
sql.clear;
sql.add('select id_produto from estoque where id_produto ='+ quotestr(produto.fieldbyname('id_produto').value));
open;
if produto.recordcount = 0 then
begin
showmessage('Produto não está em estoque e será cadastrado...');
estoque.append;
estoque.fieldbyname(id_produto).asinteger := produto.fieldbyname('id_produto').value;
estoque.fieldbyname(qtd).asinteger := você trata a forma como vai inserir do jeito que achar melhor...
estoque.post;
end;
end;
produto.next;
end;
GOSTEI 0
Ricardo
02/10/2014
Uma correção; não é "if produto.recordcount = 0 then" e sim "if estoque.recordcount = 0 then"
GOSTEI 0
Kledson Campos
02/10/2014
ok, vou testar e te digo, mais são 3 tabela: produtos, estoques e estoque_produtos . Aonde estoque_produtos tem os seguintes campos: id_produto, id_estoque no qual são chaves primarias e estrangeiras.
GOSTEI 0
Ricardo
02/10/2014
Só você fazer a junção das tabelas na query, creio que a tabela estoque_produtos indica o que esta disponível e a estoques a quantidade. Se for isso vc faz a consulta da forma como que creio que vai dar certo, usando as tabelas produtos e estoque_produtos e na hora de inserir vc faz a inserção simultânea na tabela estoque_produtos e estoques.
GOSTEI 0
Kledson Campos
02/10/2014
Olha só como e que estar a estrutura do banco.
[img:descricao=Tabela]http://arquivo.devmedia.com.br/forum/imagem/315270-20141002-224532.jpg[/img]
[img:descricao=Tabela]http://arquivo.devmedia.com.br/forum/imagem/315270-20141002-224532.jpg[/img]
GOSTEI 0