MaximoAccess

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

Obrigado

Administração do MaximoAccess

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]Controle de estoque

    avatar
    cicero de assis
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 02/04/2019

    [Resolvido]Controle de estoque Empty [Resolvido]Controle de estoque

    Mensagem  cicero de assis em 6/1/2020, 18:14

    estou criando um sistema de estoque com vendas, o sistema da baixa no estoque altomaticamente com esse codigo

    DoCmd.RunSQL "UPDATE Tlb_CadProd Set [Tlb_CadProd].[Quant] = [Tlb_CadProd].[Quant]- " & Me.Quantidade & " WHERE [Tlb_CadProd].[Código] = " & Me.Produtos.Column(0) & ""

    gostaria de que ao da baixa ele retorna-se para o estoque a quantidade.
    estou usando esse codigo porem nao esta dando certo.

    CurrentDb.Execute "UPDATE Tlb_CadProd SET Quant = " & (Quantidade + Quantidade) & " WHERE Quant = + 1 " & Código & ";"
    gostaria que voces min ajuda-se por favor
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 677
    Registrado : 07/05/2010

    [Resolvido]Controle de estoque Empty Re: [Resolvido]Controle de estoque

    Mensagem  Jungli em 6/1/2020, 18:52

    Boa tarce Cícero,

    Tente assim

    Dim QuantANT As Double 'Quantidade anterior no estoque
    Dim NovaQuant As Double 'Nova quantidade no estoque
    '// Popula a variável
       QuantANT = "": QuantANT = DLookup("[Quant]", "Tlb_CadProd", "[Código] = " & Me.Produtos.Column(0))
       NovaQuant = "": NovaQuant = (QuantANT - Nz(Me.Quantidade.Value, 0))
    '// Atualiza a tabela
       DoCmd.RunSQL "UPDATE Tlb_CadProd SET [Tlb_CadProd].[Quant]=" & NovaQuant & " WHERE [Tlb_CadProd].[Código]=" & Me.Produtos.Column(0) & ";"


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    cicero de assis
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 02/04/2019

    [Resolvido]Controle de estoque Empty Re: [Resolvido]Controle de estoque

    Mensagem  cicero de assis em 6/1/2020, 23:54

    por favor da uma olhada nesse pequeno sistema

    justamento na duvida que passei antes

    ao fazer a venda ele da baixa norma
    mais ao apagar a venda ele nao esta retornando o valor para o estoque



    https://www.dropbox.com/s/5tp776rxhioysv2/Recibo%20de%20Cliente.rar?dl=0


    Última edição por cicero de assis em 8/1/2020, 00:38, editado 1 vez(es) (Razão : novidades)
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 677
    Registrado : 07/05/2010

    [Resolvido]Controle de estoque Empty Re: [Resolvido]Controle de estoque

    Mensagem  Jungli em 7/1/2020, 20:24

    Oi, boa tarde,

    No código do botão cmdDelete_Click() em seu subformulário coloque:

    '// Atualiza o estoque do item selecionado
       DoCmd.RunSQL "UPDATE Tlb_CadProd Set [Quant]=[Quant]+" & Me.Quantidade.Value & " WHERE [Código]=" & Me.Produtos.Column(0) & ";"
    '// Apaga o registro na tabela Tbl_VendasDet referente ao codigo do produto selecionado
       DoCmd.RunSQL "DELETE  * FROM Tbl_VendasDet WHERE CodTabDet=" & Me.CodTabDet.Value & ";"
    '// Informa ao usuário
       MsgBox "Item retirado da lista com sucesso!", vbInformation, "Atenção"
    '// Atualiza o formulário
       Me.Requery

    No formulário Principal:

    No código do botão Btn_Excluir_Click() em seu formulário principal coloque:

    '// Questiona ao usuário sobre a exclusão do registro
       If MsgBox("Este procedimento irá excluir este registro definitivamente? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then
    '       Se o usuário clicar em SIM

    '// //  Procedimentos para o subformulário
    '       // Loop na tabela de itens vendidos
              'Variáveis
              Dim RecVar As DAO.Recordset
              'Abre o recordset
              Set RecVar = CurrentDb.OpenRecordset("SELECT * FROM Tbl_VendasDet WHERE CodVendas=" & Me.CodVenda.Value)
              'Loop nos registros do recordset
              Dim i As Integer: i = 0
              For i = 0 To RecVar.RecordCount - 1
                   'Atualiza o estoque do item selecionado
                   DoCmd.RunSQL "UPDATE Tlb_CadProd Set Tlb_CadProd.[Quant] = Tlb_CadProd.[Quant] + " & RecVar.Fields("Quantidade") & " WHERE Tlb_CadProd.[Código]=" & RecVar.Fields("Produtos") & ";"
                   i = i + 1
              Next
              'Fecha o recordset e limpa a memória
              Set RecVar = Nothing: Close
    '       // Apaga os registros na tabela Tbl_VendasDet referentes ao codigo da venda atual
              DoCmd.RunSQL "DELETE  * FROM Tbl_VendasDet WHERE CodVendas=" & Me.CodVenda.Value & ";"
    '// //  Final dos procedimentos do sub formulário

    '// Formulário Principal
    '   Deverá apagar o registro principal ou seja a venda!
       DoCmd.RunCommand acCmdSelectRecord
       DoCmd.RunCommand acCmdDeleteRecord
       'Informa ao usuário
       MsgBox "Venda excluída com sucesso!", vbInformation, "Atenção"
       Else
           Exit Sub
       End If

    Até mais...


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    cicero de assis
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 02/04/2019

    [Resolvido]Controle de estoque Empty melhorias

    Mensagem  cicero de assis em 8/1/2020, 00:35

    boa noite meu amigo
    funcionou pore ele so retorna para o estoque a primeira linha

    no caso se for feito uma venda com varios produtos e depois deletar todo de uma so vez, o sistema so retorna a prmeira linha as outra fica zerados.
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 677
    Registrado : 07/05/2010

    [Resolvido]Controle de estoque Empty Re: [Resolvido]Controle de estoque

    Mensagem  Jungli em 8/1/2020, 21:52

    Oi, boa tarde,


    '>>>> Este código só apaga o item da linha clicada.
    No código do botão cmdDelete_Click() em seu subformulário coloque:


    '// Atualiza o estoque do item selecionado
      DoCmd.RunSQL "UPDATE Tlb_CadProd Set [Quant]=[Quant]+" & Me.Quantidade.Value & " WHERE [Código]=" & Me.Produtos.Column(0) & ";"
    '// Apaga o registro na tabela Tbl_VendasDet referente ao codigo do produto selecionado
      DoCmd.RunSQL "DELETE  * FROM Tbl_VendasDet WHERE CodTabDet=" & Me.CodTabDet.Value & ";"
    '// Informa ao usuário
      MsgBox "Item retirado da lista com sucesso!", vbInformation, "Atenção"
    '// Atualiza o formulário
      Me.Requery



    No formulário Principal: Frm_Vendas

    No código do botão Btn_Excluir_Click() em seu formulário principal coloque:


    '// Questiona ao usuário sobre a exclusão do registro
      If MsgBox("Este procedimento irá excluir este registro definitivamente? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then
    '       Se o usuário clicar em SIM

    '// //  Procedimentos para o subformulário
    '       // Loop na tabela de itens vendidos
             'Variáveis
             Dim RecVar As DAO.Recordset
             'Abre o recordset
             Set RecVar = CurrentDb.OpenRecordset("SELECT * FROM Tbl_VendasDet WHERE CodVendas=" & Me.CodVenda.Value)
             'Loop nos registros do recordset
             Dim i As Integer: i = 0
             For i = 0 To RecVar.RecordCount - 1
                  'Atualiza o estoque do item selecionado
                  DoCmd.RunSQL "UPDATE Tlb_CadProd Set Tlb_CadProd.[Quant] = Tlb_CadProd.[Quant] + " & RecVar.Fields("Quantidade") & " WHERE Tlb_CadProd.[Código]=" & RecVar.Fields("Produtos") & ";"
                  i = i + 1
    RecVar.MoveNext
             Next
             'Fecha o recordset e limpa a memória
             Set RecVar = Nothing: Close
    '       // Apaga os registros na tabela Tbl_VendasDet referentes ao codigo da venda atual
             DoCmd.RunSQL "DELETE  * FROM Tbl_VendasDet WHERE CodVendas=" & Me.CodVenda.Value & ";"
    '// //  Final dos procedimentos do sub formulário

    '// Formulário Principal
    '   Deverá apagar o registro principal ou seja a venda!
      DoCmd.RunCommand acCmdSelectRecord
      DoCmd.RunCommand acCmdDeleteRecord
      'Informa ao usuário
      MsgBox "Venda excluída com sucesso!", vbInformation, "Atenção"
      Else
          Exit Sub
      End If

    Até mais...

    Funcionou corretamente aqui....


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    cicero de assis
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 02/04/2019

    [Resolvido]Controle de estoque Empty Controle de estoque

    Mensagem  cicero de assis em 9/1/2020, 11:24

    Bom dia comandante.
    o código funciona perfeito ele apaga a venda normalmente,  so que se for feito uma venda com vários item e depois apagar esta venda o código só retorna para o estoque o primeiro item da venda apagada.
    os outro item não retorna para o estoque.
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 677
    Registrado : 07/05/2010

    [Resolvido]Controle de estoque Empty Re: [Resolvido]Controle de estoque

    Mensagem  Jungli em 9/1/2020, 17:54

    Boa tarde cícero,

    use este código no botão excluir do frm_vendas

    Private Sub Btn_Excluir_Click()

    '// Desativa os avisos do sistema
    DoCmd.SetWarnings False
    '// Questiona ao usuário sobre a exclusão do registro
    If MsgBox("Este procedimento irá excluir este registro definitivamente? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then
    ' Se o usuário clicar em SIM

    '// // Procedimentos para o subformulário
    ' // Loop na tabela de itens vendidos
    'Variáveis
    Dim RecV As DAO.Recordset
    'Abre o recordset
    Set RecV = CurrentDb.OpenRecordset("SELECT * FROM Tbl_VendasDet WHERE (((Tbl_VendasDet.CodVendas)=" & Int(Me.CodVenda.Value) & "));", dbOpenDynaset)
    'Loop nos registros do recordset
    While (Not RecV.EOF)
    'Atualiza o estoque do item selecionado
    Dim tSQL As String
    tSQL = "UPDATE Tlb_CadProd Set Tlb_CadProd.[Quant] = Tlb_CadProd.[Quant] + " & RecV.Fields("Quantidade") & " WHERE Tlb_CadProd.[Código]=" & RecV.Fields("Produtos") & ";"
    DoCmd.RunSQL tSQL
    Debug.Print RecV.Fields("Produtos")
    RecV.MoveNext
    Wend
    'Fecha o recordset e limpa a memória
    Set RecV = Nothing: Close
    ' // Apaga os registros na tabela Tbl_VendasDet referentes ao codigo da venda atual
    DoCmd.RunSQL "DELETE * FROM Tbl_VendasDet WHERE CodVendas=" & Me.CodVenda.Value & ";"
    '// // Final dos procedimentos do sub formulário

    '// Formulário Principal
    ' Deverá apagar o registro principal ou seja a venda!
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdDeleteRecord
    'Informa ao usuário
    MsgBox "Venda excluída com sucesso!", vbInformation, "Atenção"
    Else
    Exit Sub
    End If


    Refiz a estrutura do loop da tabela tbl_VendasDet,

    aqui funcionou certinho.


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    cicero de assis
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 02/04/2019

    [Resolvido]Controle de estoque Empty Re: [Resolvido]Controle de estoque

    Mensagem  cicero de assis em 10/1/2020, 12:05

    bom dia meu amigo
    foi solucionado o problema
    você e muito inteligente
    obrigo pela atenção.
    avatar
    cicero de assis
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 02/04/2019

    [Resolvido]Controle de estoque Empty Controle de estoque

    Mensagem  cicero de assis em 17/1/2020, 14:08

    bom dia meu amigo. como eu faco para ao finalizar uma venda a vista o sistema ja informar como venda quitada no modulo quitar parcela, no momento o sistema joga no modulo quitar parcela todas como pendente.
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 677
    Registrado : 07/05/2010

    [Resolvido]Controle de estoque Empty Re: [Resolvido]Controle de estoque

    Mensagem  Jungli em 17/1/2020, 18:25

    Oi boa tarde,

    não tenho mais o seu exemplo aqui, mas você pode tentar assim.

    no seu botão de finalizar venda coloque:

    'Atualiza informação do campo
    Dim tSQL As String
    tSQL = "UPDATE Tbl_Vendas Set Tbl_Vendas.[Quitar] = -1 WHERE Tbl_Vendas.[CodVenda]=" & Me.CodVenda.Value & ";"
    DoCmd.RunSQL tSQL


    PS: Ao aparecer uma nova dúvida, favor crie outro post pois este aqui já foi solucionado.

    Abraços.


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    cicero de assis
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 02/04/2019

    [Resolvido]Controle de estoque Empty Controle de estoque

    Mensagem  cicero de assis em 17/1/2020, 19:34

    ok meu amigo

    abrie um novo tópico

    envie o link
    depois veja a questão que te passei anterior
    obrigado pela atenção

      Data/hora atual: 5/12/2020, 17:39