MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Atualizar Estoque

    Ney Santos
    Ney Santos
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 280
    Registrado : 23/05/2011

    [Resolvido]Atualizar Estoque Empty [Resolvido]Atualizar Estoque

    Mensagem  Ney Santos 21/10/2020, 02:39

    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.
    Ney Santos
    Ney Santos
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 280
    Registrado : 23/05/2011

    [Resolvido]Atualizar Estoque Empty Re: [Resolvido]Atualizar Estoque

    Mensagem  Ney Santos 21/10/2020, 03:29

    Oque a falta de atenção não faz..
    Depois de horass e horass tentando saber oque estava errado, decobri.
    O problema e que inverti um dos codigo>
    Set rs1 = Db.OpenRecordset("SELECT * FROM TabelaSubprodutos WHERE sysId = " & rs!CodigoItem & "")<==== aqui etsva o erro
    estava apontando o codigo do item..n por isso so atualizava 1 item.
    Set rs1 = Db.OpenRecordset("SELECT * FROM TabelaSubprodutos WHERE sysId = " & rs!IdComponente & "")
    esse e o codigo correto.
    Resolvido

    fnicolau gosta desta mensagem


      Data/hora atual: 23/6/2021, 06:54