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


2 participantes

    Relação Cliente-Produto-Orçamento

    avatar
    matheuspn
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 23
    Registrado : 23/06/2010

    Relação Cliente-Produto-Orçamento Empty Relação Cliente-Produto-Orçamento

    Mensagem  matheuspn 9/7/2013, 12:01

    Bom dia a todos,

    Em meu banco tenho a seguinte estrutura:

    Cadastro de Clientes.
    Cadastro de Produtos.
    Cadastro de Orçamentos.

    Tenho um formulário de cadastro de clientes e nele um subformulário para cadastrar os produtos.

    Preciso gerar diversos orçamentos para o mesmo cliente, porém em cada orçamento o usuário deve escolher quais produtos ele irá incluir.

    a parte de seleção dos itens eu sei como fazer o problema é que preciso de algum modo gravar a seleção referente aquele orçamento para usar posteriormente.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    Relação Cliente-Produto-Orçamento Empty Relação Cliente-Produto-Orçamento

    Mensagem  good guy 12/7/2013, 22:51

    Olá Matheus,

    Crie uma tabela auxiliar(tblSelecao) que receberá os produtos escolhidos pelo cliente com campos do tipo CodCliente, CodProduto,Produto,Preco,Quantidade.

    Veja este exemplo:

    Public Sub CalculaEstoque()
    'Código de Eduardo Machado (Good Guy) Por favor respeite os direitos autorais
    On Error Resume Next
    Dim strSQL As String
    Dim TotalQuant As Integer
    Dim sQuant As Integer
    Dim nCodigo As Integer
    Dim sCodigo As String
    Dim nQuant As Integer
    sCodigo = Me.cboCodigoCliente.Column(0)
    nCodigo = CInt(DLast("CodigoProduto", "qrytblSelecao", "CodigoCliente = '" & sCodigo & "'"))
    nQuant = CInt(DLookup("Quantidade", "Produtos", "CodigoProd = '" & nCodigo & "'"))
    DoCmd.SetWarnings False
    If nQuant > 5 Then
    sQuant = CInt(Forms!PDV!txtQuant)
    MsgBox "BAIXA NO ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
    TotalQuant = Abs(nQuant - sQuant)
    strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'"
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    DoCmd.RunCommand acCmdRefresh
    Else
    MsgBox "ESTE PRODUTO ESTÁ NO ESTOQUE MÍNIMO !!!", vbCritical, "ALERTA"
    Beep
    sQuant = CInt(Forms!PDV!txtQuant)
    MsgBox "BAIXA NO ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
    TotalQuant = Abs(nQuant - sQuant)
    strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'"
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    DoCmd.RunCommand acCmdRefresh
    End If
    End Sub

    Public Sub CalculaReposicao()
    'Código de Eduardo Machado (Good Guy) Por favor respeite os direitos autorais
    On Error Resume Next
    Dim strSQL As String
    Dim TotalQuant As Integer
    Dim sQuant As Integer
    Dim nCodigo As Integer
    Dim sCodigo As String
    Dim nQuant As Integer
    sCodigo = Me.cboCodigoCliente.Column(0)
    nCodigo = CInt(DLast("CodigoProduto", "qrytblSelecao", "CodigoCliente = '" & sCodigo & "'"))
    nQuant = CInt(DLookup("Quantidade", "Produtos", "CodigoProd = '" & nCodigo & "'"))
    DoCmd.SetWarnings False
    sQuant = CInt(Forms!PDV!txtQuant)
    MsgBox "REPOSIÇÃO DE ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
    TotalQuant = nQuant + sQuant
    strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'"
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    DoCmd.RunCommand acCmdRefresh
    End Sub

    Na saída do campo Quantidade :

    Private Sub txtQuant_LostFocus()
    'Código de Eduardo Machado (Good Guy) Por favor respeite os direitos autorais
    On Error Resume Next
    Dim Tipo As Currency
    Dim Tipo2 As String
    Dim Tipo3 As String
    Dim Tipo4 As String
    Dim strSQL As String
    Dim sTipo As String
    Dim nTipo As String
    Dim rTipo As String
    Dim sSenha As String
    Dim sCodigo As String
    Dim strSQL2 As String
    Dim mDate As String
    sCodigo = Me.cboCodigoCliente.Column(0)
    sSenha = DLookup("Senha", "Clientes", "Codigo = '" & sCodigo & "'")
    mDate = Format(Date, "dd/mm/yyyy")
    Me.DataVenda = mDate
    Tipo = txtSaldo
    Tipo2 = txtProduto
    Tipo3 = cboCodProduto.Column(0)
    Tipo4 = DataVenda
    sTipo = txtValor
    nTipo = txtQuant
    rTipo = txtTotal

    'tblSelecao é uma tabela criada para receber temporiamente os dados de produtos do cliente.

    If Not IsNull(txtSenha) And txtSenha = sSenha Then
    DoCmd.SetWarnings False
    strSQL = "INSERT INTO tblSelecao(CodigoCliente,CodigoProduto,Produto,Quantidade, ValordeVenda,Total, Saldo, DataVenda)VALUES('" & sCodigo & "','" & Tipo3 & "', '" & Tipo2 & "','" & nTipo & _
    "', '" & sTipo & "', '" & rTipo & "','" & Tipo & "','" & Tipo4 & "')"

    DoCmd.RunSQL strSQL
    DoCmd.RunCommand acCmdRefresh
    DoCmd.SetWarnings True
       If Me.txtSaldo < 0 Or txtSaldo < txtTotal Then
       MsgBox "DESCULPE SEU LIMITE FOI EXCEDIDO!!!", vbExclamation, "PDV"
       On Error Resume Next
       Dim nCodigo As Integer
       Dim pCodigo As String
       Dim nQuant As Integer
       Dim strMsg As String
       Dim strTitle As String
       Dim intRetVal As Integer
       pCodigo = Me.cboCodProduto.Column(0)
       nCodigo = CInt(DLast("CodigoProduto", "tblSelecao", "CodigoProduto = '" & pCodigo & "'"))
       DoCmd.SetWarnings False
       strSQL = "DELETE * FROM tblSelecao WHERE CodigoProduto = '" & nCodigo & "'"
       DoCmd.RunSQL strSQL
       DoCmd.SetWarnings True
       DoCmd.RunCommand acCmdRefresh
       Else
       strMsg = UCase("Atualiza o estoque deste produto?")
       strTitle = "Atualização de Estoque"
       intRetVal = MsgBox(strMsg, vbQuestion + vbYesNo, strTitle)
       Select Case intRetVal
       Case vbYes
       Call CalculaEstoque
       Case vbNo
       DoCmd.CancelEvent
       End Select
       With Me
       .cboCodProduto = ""
       .txtProduto = ""
       .txtValor = 0
       .txtQuant = 1
       End With
       Me.Refresh
       Me.cboCodProduto.SetFocus
       End If

    Else
    MsgBox UCase("Senha Não Confere. Não foi possível inserir o produto !!!"), vbCritical, "PDV"
    End If
    End Sub
    avatar
    matheuspn
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 23
    Registrado : 23/06/2010

    Relação Cliente-Produto-Orçamento Empty OBrigado!

    Mensagem  matheuspn 19/7/2013, 18:41

    Obrigado pela resposta, vou tentar implantar no sistema.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    Relação Cliente-Produto-Orçamento Empty Relação Cliente-Produto-Orçamento

    Mensagem  good guy 19/7/2013, 19:39

    O fórum agradece. Visite o meu site www.goodguyaccessvba.com.br e baixe uma versão demo de um sistema PDV.

    Conteúdo patrocinado


    Relação Cliente-Produto-Orçamento Empty Re: Relação Cliente-Produto-Orçamento

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 06:48