Prezados boa noite:
Depois de horas pesquisando aqui no site se tinha alguma postagem que trata-se do emsmo assunto , como não encontrei recorro masi uam vez a voces.
em meu proejto tenho 5 Tabelas que estao diretamente ligadas umas as outras.
TAb 1- Guardas os produtos( são produtos compostos).( Tab.Item)
Tab 2- Possui os itens que compoem o produto da tabela 1.(tabSubProdutos)
Tab. 3- Recebe o Id do produto e dos Itens que o compoem.(TbProdComposicao)
Tab.4 -Dou entrada na materia prima (os itens da tab 2)(TbEstMatPrima)
Tab5 Recebe o itens prontos pela fabrica(TbEntProd).
Bem não sei se estou fazendso da melhor forma mas é como aprendi a fazer..
1- dou entarda na materia prima, com isso aliemnto a tab.tabSubProdutos
2- Ao Cadastrar um produto, todos os seu componentes( materia prima) ore gistro e guardado na tab.TbProdComposicao
3- Ao dar entrada num produto pronto Estoque disponivel ealteradoo( ele esta na tab. Item)
Até aqui tudo bem.
O que não estou conseguindo fazer é baixar a quantidade de materia prima que foi utilizada na produção.
Exemplo: 1 pote de sorvete de 1 Kilo Utiliza:
800ml leite, 300 gr acucar, 10 ml essencia, 30 gr emulsussificane e outros.
no caso de eu lançar 10 potes no estoque, deveria ser baixado do estoque a quantidade de mat prima utilizada multiplicada pela quantidade de itens produzidos.
E ai estou empacando pq s estou conseguindo atulizar um dos com,ponetentes os outrso nao atualizam.
Segue o Codigo:
Private Sub BtGrava_Click()
Dim Db As DAO.Database
Dim rs, rs1 As Recordset
Set Db = CurrentDb
Set rs = OpenForSeek("Item")
Set rs1 = OpenForSeek("TbEntprod")
rs.Index = "IdItem"
rs.Seek "=", [TxIdItem]
rs1.Index = "PrimaryKey"
rs1.Seek "=", [TxIdItem]
Me.TxDataLan = Date
With rs1
.AddNew
Me.TxIdEntrada = !IdEntrada
!IdItem = Me.TxIdItem
!Quantidade = Me.TxQuant
!DataLan = Me.TxDataLan
.Update
End With
With rs
.Edit
!CodigoItem = Me.TxIdItem
!Disponivel = !Disponivel + Me.TxQuant
.Update
AtMatPrima
MsgBox "Estoque atualizado com sucesso", vbInformation, "estoque"
End With
-AtMatPrima é uma função:
Private Sub AtMatPrima()
Dim Db As DAO.Database
Dim rs, rs1 As Recordset
Set rs = OpenForSeek("dbProduto_Composicao")
Set rs1 = OpenForSeek("TabelaSubprodutos")
rs1.Index = "PrimaryKey"
rs1.Seek "=", Me.TxIdItem
Set Db = CurrentDb
Set rs = Db.OpenRecordset("SELECT * FROM dbProduto_Composicao WHERE CodigoItem= " & Me.TxIdItem & "")
Do While Not rs.EOF 'Repetirei Até que não haja mais registros no rs
Set rs1 = Db.OpenRecordset("SELECT * FROM TabelaSubprodutos WHERE sysId = " & rs!CodigoItem & "")
rs1.Edit
rs1!Estoque = rs1!Estoque - rs!Quant_Prod
rs1.Update
'----------------------------------------------------------------------------------------------------------------
rs.MoveNext 'Movo para proximo registro para Iniciar a Atualização do Novo produto...
Loop 'Fim da
'--------------------------------------------------------------------------------------------------------------
'Fecha as Conexoes abertas
rs.Close
rs1.Close
Set rs = Nothing
Set rs1 = Nothing
End Sub
Desculpe o longo texto mas nao sabia como explicar resumidamente.
Depois de horas pesquisando aqui no site se tinha alguma postagem que trata-se do emsmo assunto , como não encontrei recorro masi uam vez a voces.
em meu proejto tenho 5 Tabelas que estao diretamente ligadas umas as outras.
TAb 1- Guardas os produtos( são produtos compostos).( Tab.Item)
Tab 2- Possui os itens que compoem o produto da tabela 1.(tabSubProdutos)
Tab. 3- Recebe o Id do produto e dos Itens que o compoem.(TbProdComposicao)
Tab.4 -Dou entrada na materia prima (os itens da tab 2)(TbEstMatPrima)
Tab5 Recebe o itens prontos pela fabrica(TbEntProd).
Bem não sei se estou fazendso da melhor forma mas é como aprendi a fazer..
1- dou entarda na materia prima, com isso aliemnto a tab.tabSubProdutos
2- Ao Cadastrar um produto, todos os seu componentes( materia prima) ore gistro e guardado na tab.TbProdComposicao
3- Ao dar entrada num produto pronto Estoque disponivel ealteradoo( ele esta na tab. Item)
Até aqui tudo bem.
O que não estou conseguindo fazer é baixar a quantidade de materia prima que foi utilizada na produção.
Exemplo: 1 pote de sorvete de 1 Kilo Utiliza:
800ml leite, 300 gr acucar, 10 ml essencia, 30 gr emulsussificane e outros.
no caso de eu lançar 10 potes no estoque, deveria ser baixado do estoque a quantidade de mat prima utilizada multiplicada pela quantidade de itens produzidos.
E ai estou empacando pq s estou conseguindo atulizar um dos com,ponetentes os outrso nao atualizam.
Segue o Codigo:
Private Sub BtGrava_Click()
Dim Db As DAO.Database
Dim rs, rs1 As Recordset
Set Db = CurrentDb
Set rs = OpenForSeek("Item")
Set rs1 = OpenForSeek("TbEntprod")
rs.Index = "IdItem"
rs.Seek "=", [TxIdItem]
rs1.Index = "PrimaryKey"
rs1.Seek "=", [TxIdItem]
Me.TxDataLan = Date
With rs1
.AddNew
Me.TxIdEntrada = !IdEntrada
!IdItem = Me.TxIdItem
!Quantidade = Me.TxQuant
!DataLan = Me.TxDataLan
.Update
End With
With rs
.Edit
!CodigoItem = Me.TxIdItem
!Disponivel = !Disponivel + Me.TxQuant
.Update
AtMatPrima
MsgBox "Estoque atualizado com sucesso", vbInformation, "estoque"
End With
-AtMatPrima é uma função:
Private Sub AtMatPrima()
Dim Db As DAO.Database
Dim rs, rs1 As Recordset
Set rs = OpenForSeek("dbProduto_Composicao")
Set rs1 = OpenForSeek("TabelaSubprodutos")
rs1.Index = "PrimaryKey"
rs1.Seek "=", Me.TxIdItem
Set Db = CurrentDb
Set rs = Db.OpenRecordset("SELECT * FROM dbProduto_Composicao WHERE CodigoItem= " & Me.TxIdItem & "")
Do While Not rs.EOF 'Repetirei Até que não haja mais registros no rs
Set rs1 = Db.OpenRecordset("SELECT * FROM TabelaSubprodutos WHERE sysId = " & rs!CodigoItem & "")
rs1.Edit
rs1!Estoque = rs1!Estoque - rs!Quant_Prod
rs1.Update
'----------------------------------------------------------------------------------------------------------------
rs.MoveNext 'Movo para proximo registro para Iniciar a Atualização do Novo produto...
Loop 'Fim da
'--------------------------------------------------------------------------------------------------------------
'Fecha as Conexoes abertas
rs.Close
rs1.Close
Set rs = Nothing
Set rs1 = Nothing
End Sub
Desculpe o longo texto mas nao sabia como explicar resumidamente.