GERAR BAIXA ESTOQUE COM RECURSIVIDADE
Boa noite
Estou com problema classico mas meu tempo esta se esgotando e nao to conseguindo resolver estou desenvolvendo um sistema de produção onde os produtos possuem sua estrutura dentro dessa estrutura podem existir outros sub produtos com suas estruturas Ex produzo tampa shampoo sendo uma tampa e composta por tres sub tampas sendo que duas dessas subtampas sao compostas por outros sub produtos.
Para eu produzir 500 tampas shampoo preciso baixar estoque de todos esses sub produtos e suas materias primas.
Alguem pode me ajudar ?
Grato
Fernando
Estou com problema classico mas meu tempo esta se esgotando e nao to conseguindo resolver estou desenvolvendo um sistema de produção onde os produtos possuem sua estrutura dentro dessa estrutura podem existir outros sub produtos com suas estruturas Ex produzo tampa shampoo sendo uma tampa e composta por tres sub tampas sendo que duas dessas subtampas sao compostas por outros sub produtos.
Para eu produzir 500 tampas shampoo preciso baixar estoque de todos esses sub produtos e suas materias primas.
Alguem pode me ajudar ?
Grato
Fernando
O que você está fazendo se chama romaneio e pode ser bastante complexo. Geralmente, se usa uma tabela com a estrutura:
Nesse caso, se fossemos dar baixa no produto de código 24, farÃamos a seleção na tabela de romaneios procurando pelo produto 24 e dando baixa em todos os produtos que o compõem, sendo que o processo de baixa de componentes, é o mesmo que o anterior, ou seja, ele também vai percorrer a tabela de romaneios e baixar o que tiver que baixar e assim sucessivamente. Para isso, crie uma function ou sub que chame ela mesma para fazer a baixa, assim:
Produto | Componente | Quantidade |
24 | 35 | 1 |
24 | 43 | 0,50 |
25 | 8 | 12 |
39 | 35 | 5 |
Nesse caso, se fossemos dar baixa no produto de código 24, farÃamos a seleção na tabela de romaneios procurando pelo produto 24 e dando baixa em todos os produtos que o compõem, sendo que o processo de baixa de componentes, é o mesmo que o anterior, ou seja, ele também vai percorrer a tabela de romaneios e baixar o que tiver que baixar e assim sucessivamente. Para isso, crie uma function ou sub que chame ela mesma para fazer a baixa, assim:
Sub BaixarProduto(codigo)
(conecta no banco)
(selecionar na tabela de romaneios o produto [Ô]codigo[Ô])
(fazer um loop nessa tabela e chamar BaixarProduto(codigo) para cada produto encontrado)
End Sub
Boa noite amigo: Preciso criar uma baixa de estoque:
quando requisito 500 tampas xpto preciso saber o que consome essa tampa na estrutura dela :
a estrutura dela e composta de 1 sub tampa x, 1 sub tampa y, 0,0004 caixa papelao
a sub tampa x e composta de uma outra subtampa z e outra subtampa t e cada subtampa tem seu consumo de master e resina.
entao quando eu produzir 500 tampas
preciso saber quanto de master e resina preciso requisitar para cada subtampa
quando requisito 500 tampas xpto preciso saber o que consome essa tampa na estrutura dela :
a estrutura dela e composta de 1 sub tampa x, 1 sub tampa y, 0,0004 caixa papelao
a sub tampa x e composta de uma outra subtampa z e outra subtampa t e cada subtampa tem seu consumo de master e resina.
entao quando eu produzir 500 tampas
preciso saber quanto de master e resina preciso requisitar para cada subtampa
Pois é, você consegue fazer isso do modo que te falei
Private Sub Command1_Click()
a = baixarproduto(1)
End Sub
Private Function baixarproduto(produto) As Integer
estrutura.RecordSource = [Ô]SELECT * FROM estrutura where idproduto=[Ô] & produto
estrutura.Refresh
While Not estrutura.Recordset.EOF
MsgBox (estrutura.Recordset([Ô]idmat[Ô]))
a = baixarproduto(estrutura.Recordset([Ô]idmat[Ô]))
estrutura.Recordset.MoveNext
Wend
End Function
nao faz o que imaginava
a = baixarproduto(1)
End Sub
Private Function baixarproduto(produto) As Integer
estrutura.RecordSource = [Ô]SELECT * FROM estrutura where idproduto=[Ô] & produto
estrutura.Refresh
While Not estrutura.Recordset.EOF
MsgBox (estrutura.Recordset([Ô]idmat[Ô]))
a = baixarproduto(estrutura.Recordset([Ô]idmat[Ô]))
estrutura.Recordset.MoveNext
Wend
End Function
nao faz o que imaginava
E o que acontece? Não baixa nenhum? Não acha nenhum?
baixa dois primeiros depois da eof
Ao invés de usar o mesmo recordset, experimente usar um recordset separado.
Nao entendi
O objeto [Ô]estrutura[Ô], é um recordset que você está só atualizando com uma query diferente toda a vez que entra na rotina. Dentro da rotina crie um outro recordset:
Dim rs as new recordset
rs.Open [Ô]select xxxxx[Ô]
.....
Nao posso encerrar antes de agradecer muito obrigado funcionou.http://www.vbmania.com.br/index.php?modulo=forum&metodo=encerrar&id=451062
Tópico encerrado , respostas não são mais permitidas