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


3 participantes

    [Resolvido]Inserir produto na tela de pedido

    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Inserir produto na tela de pedido

    Mensagem  wpitarelli 13/6/2013, 02:26

    Amigos do fórum, o meu sistema de pedidos funciona muito bem, mas como o usuário nunca esta contente me deparei nesta duvida abaixo.

    Tenho esta tela de pedidos, onde digito a referencia do produto e atualiza a grade e o cliente digita a quantidade, mas ate ai tudo bem, o negocio piora agora. Um usuário me perguntou o seguinte.

    - Quando eu digito a referencia xxxx ele me da na tela tudo certinho, mas as vezes eu esqueço que digitei e digito novamente por falta de atenção por causa da criança ou da mulher, tem como colocar um meio de quando eu digitar aparecesse a tela novamente com a quantidade que eu já havia digitado, assim eu não duplicava os produtos.

    Bem amigos esta é a minha duvida também, se eu trocar a combo por uma caixa resolveria??? Como fazer isto???
    Segue a tela e o código da combo produto.

    [Resolvido]Inserir produto na tela de pedido Pedidoa

    Código:
    Private Sub codproduto_AfterUpdate()

        Select Case Me.Tabela
        Case 1
            Me.PrecoUnitario = Me.CodProduto.Column(5)
        Case 2
            Me.PrecoUnitario = Me.CodProduto.Column(6)
        Case 3
            Me.PrecoUnitario = Me.CodProduto.Column(7)
        Case 4
            Me.PrecoUnitario = Me.CodProduto.Column(8)
        Case 5
            Me.PrecoUnitario = Me.CodProduto.Column(9)
        Case 6
            Me.PrecoUnitario = Me.CodProduto.Column(10)
        Case 7
            Me.PrecoUnitario = Me.CodProduto.Column(11)
        Case 8
            Me.PrecoUnitario = Me.CodProduto.Column(12)
        End Select

    'Melhor método para retornar valores em campos baseados em ComboBox
        Dim strFiltroPreco As String
        Dim strFiltroDesconto As String
        If Me.CodProduto.ListIndex = -1 Then    'ComboBox -- Verifica se o campo é nulo
        MsgBox "O campo Cód. Produto está vazio." & vbCrLf & "Por favor selecione um produto."
            Exit Sub
        End If
        Me.CodProduto.Requery
    End Sub



    Private Sub Form_BeforeUpdate(Cancel As Integer)
    On Error GoTo Err_Form_BeforeUpDate
    Const conErrNotVrNull = 94
    Dim strVenda As String
    Dim curVenda As Currency
    Dim strTotal As String
    Dim curTotal As Currency
    lin = Chr$(13) & Chr$(10)
    curVenda = Me.PrecoUnitario
    strVenda = Format(curVenda, "#,##0.00")
    curTotal = Me.TotalItem
    strTotal = Format(curTotal, "#,##0.00")
    If IsNull(Me.CodProduto) Then
        CritMsg "Informe o Produto!"
        Me.CodProduto.SetFocus
        DoCmd.CancelEvent
        Exit Sub
    End If
    If Me.Quantidade = 0 Then
        CritMsg "Informe a Quantidade!"
        DoCmd.CancelEvent
        Exit Sub
    End If
            blnOK = Confirmar("Incluir Produto?" & lin _
            & lin & "Cód. Produto: " & CodProduto.Column(1) & lin _
            & lin & "Descrição  : " & Descrição & lin _
            & lin & "Grade      : " & Grade & lin _
            & lin & "Tamanho    : " & Tamanho & lin _
            & lin & "Valor Unit. : " & strVenda & lin _
            & lin & "Quantidade  : " & Quantidade & lin _
            & lin & "Total Item  : " & strTotal)
            If Not blnOK Then
                Cancel = True
            End If
    Exit_Form_BeforeUpDate:
        Exit Sub
    Err_Form_BeforeUpDate:
        If Err.Number = conErrNotVrNull Then
            CritMsg "Registro com valores inválidos!"
            Cancel = True
        Else
            CritMsg Err.Description
        End If
    Resume Exit_Form_BeforeUpDate
    End Sub



    Caso não tenha sido claro estou realmente a disposição.

    Abraços




    Windows 8
    Office 2010
    64 bits
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Leandro 13/6/2013, 12:27

    Bom dia!

    Estive durtante um período tentando fazer algo parecido e há alguns dias atrás consegui com a ajuda do Avelino.

    Foi feito isso:

    No evento ao atualizar da combo eu coloquei uma linha para gerar uma string com os códigos que fossem selecionados:

    Dim strCodSelect As String
    strCodSelect = strCodSelect & Me!SucaCombo.Value & ","

    Assim será gerada uma string com todos os códigos que forem lançados na combo.

    Na sequência, no Evento ao Sair dessa mesma combo, você coloca a análise da string com a função InStr.

    If InStr(InStr(strCodSelect, Me!Servico) + 1, strCodSelect, Me!Servico) > 1 Then
    MsgBox "Esse código já foi lançado!", vbInformation, "Código duplicado"
    DoCmd.CancelEvent 'Cancela a saída do campo até que um código "inédito" seja inserido.
    End If

    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 13/6/2013, 13:01

    Não deu certo. Estou tentando tambem caso eu tenha um solução postarei
    Abraços e obrigado pela ajuda.
    Estarei aqui novamente somente hoje a noite
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 15/6/2013, 03:27

    Piloto, Avelino, JPaulo e outros mestres
    Alguma ideia??? estou meio que perdido
    Abraços
    avatar
    Kaynan
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2980
    Registrado : 09/04/2012

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Kaynan 15/6/2013, 13:34

    Ola amigo poste o bd real,sera mais facil ajuda-lo.

    Cumprimentos.
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 15/6/2013, 15:00

    Segue o BD
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 19/6/2013, 01:17

    Ninguém, tem uma ideia.
    Abraços
    avatar
    Kaynan
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2980
    Registrado : 09/04/2012

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Kaynan 19/6/2013, 01:49

    Amigo o exemplo que mandou esta dando muito erro de compilação,por falta dos outros formularios,assim ta ficando dificil aplicar algum código e fazer funcionar direito como quer.Se for possivel envie o bd completo pro forum ou,pro email.rachidsilva@yahoo.com.br  ficara mais facil ajuda-lo.

    Cumprimentos.
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 19/6/2013, 19:07

    BD completo 250MB

    Vi esse código e adaptei, mas esta dando erro 3075.

    Código:
    Dim strCodSelect As String
        strCodSelect = DLookup("[CodProduto]", "tblproduto", "CodProduto='" & Me![CodProduto] & "")
        
        If Not IsNull(strCodSelect) Then
            MsgBox "Já Cadastrado", vbCritical
            ' Encontrar o registro que coincide com o controle.
            Me.RecordsetClone.FindFirst "[CodProduto] = " & Me![CodProduto]
            Me.Bookmark = Me.RecordsetClone.Bookmark
        End If
    avatar
    Convidado
    Convidado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Convidado 24/6/2013, 18:52

    Quando digita novamente o que e onde?

    Poste um modelo conciso do bd para que possamos ver.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Convidado 24/6/2013, 18:56

    Pelo que entendi.. se seleciona novamente outra referencia na combo.. ele adiciona um novo registro...

    O que podes fazer é criar uma variável do tipo boolean a ser definida como true após atualizar a combo... e defini-la como false apos inserir o produto..
    caso o produto ainda nao tenha sido inserido a variável estará como true.. e nesse caso se colocar outra referencia  enviar o form para o último registro salvo... ai o edita.


    Se entendi direito algo assim funcionaria.

    Cumprimentos.
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 24/6/2013, 23:17

    PILOTO,
    se caso você tiver o teamviewer eu te mostro o meu bd aqui. 
    Sempre estou disponível no período da noite das 19h ate 01h.
    Dai lhe mostro que está acontecendo, estou tentando com o Dcount, mas está dando um erro.
    Abraços
    avatar
    Convidado
    Convidado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Convidado 25/6/2013, 17:09

    Não teria como enviar-me o bd com os objetos envolvidos?


    Cumprimentos.
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 25/6/2013, 18:07

    O bd esta ai no topico acima. Qualquer pergunta estou a dispoicao. Lembrando ele ta configurado para 64 bits. E so tirar o PRTSAFE.
    Abracos
    avatar
    Convidado
    Convidado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Convidado 25/6/2013, 19:38

    Bem pelo que entendi então... se você inadivertidamente selecionar na combo um poduto que ja tenha no pedido remeter o registro para este produto.

    é isso?

    Cumprimentos.
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 25/6/2013, 20:33

    Isso ai, piloto
    Abracos
    avatar
    Convidado
    Convidado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Convidado 25/6/2013, 20:41

    Vamos la...

    Nas declarações do módulo do form, crie uma variável do tipo boolean
    Dim CancelaIns as Boolean


    No Evento após atualizar da combo:



    Private Sub codproduto_AfterUpdate()

        Dim strCodSelect As String
        strCodSelect = strCodSelect & Me!CodProduto.Value & ","
       
        If DCount("[CodProduto]", "tblItensPedido", "CodProduto=" & Me.CodProduto.Column(0) & "") > 0 Then
            If Not IsNull(strCodSelect) Then
                CancelaIns = True
                MsgBox "Já Cadastrado", vbCritical
                ' Encontrar o registro que coincide com o controle.
                Me.RecordsetClone.FindFirst "[CodProduto] = " & Me.CodProduto.Column(0)
                Me.Bookmark = Me.RecordsetClone.Bookmark
    '            Me.CodProduto = Null
                Exit Sub
            End If
        End If
       
        Select Case Me.Tabela
        Case 1
            Me.PrecoUnitario = Me.CodProduto.Column(5)
        Case 2
            Me.PrecoUnitario = Me.CodProduto.Column(6)
        Case 3
            Me.PrecoUnitario = Me.CodProduto.Column(7)
        Case 4
            Me.PrecoUnitario = Me.CodProduto.Column(Cool
        Case 5
            Me.PrecoUnitario = Me.CodProduto.Column(9)
        Case 6
            Me.PrecoUnitario = Me.CodProduto.Column(10)
        Case 7
            Me.PrecoUnitario = Me.CodProduto.Column(11)
        Case 8
            Me.PrecoUnitario = Me.CodProduto.Column(12)
        End Select
       


    'Melhor método para retornar valores em campos baseados em ComboBox
        Dim strFiltroPreco As String
        Dim strFiltroDesconto As String
        If Me.CodProduto.ListIndex = -1 Then    'ComboBox -- Verifica se o campo é nulo
         MsgBox "O campo Cód. Produto está vazio." & vbCrLf & "Por favor digite um produto."
            Exit Sub
        End If

    If Not IsNull(Me.CodProduto) Then
        Select Case Me.Grade
            Case "BEBE"
                Me.pg_Bebe.enabled = True
                Me.pg_Bebe.SetFocus
                ..........  Prosegue o mesmo código


    No evento após atulizar do sub form


    Private Sub Form_BeforeUpdate(Cancel As Integer)
    On Error GoTo Err_Form_BeforeUpDate
    Const conErrNotVrNull = 94
    Dim strVenda As String
    Dim curVenda As Currency
    Dim strTotal As String
    Dim curTotal As Currency
    If CancelaIns = True Then CancelaIns = False: Exit Sub
    lin = Chr$(13) & Chr$(10)
    curVenda = Me.PrecoUnitario
    strVenda = Format(curVenda, "#,##0.00")
    curTotal = Me.TotalItem
    strTotal = Format(curTotal, "#,##0.00")
    If IsNull(Me.CodProduto) Then
        CritMsg "Informe o Produto!"
        Me.CodProduto.SetFocus
        DoCmd.CancelEvent
        Exit Sub
    End If
    If Me.Quantidade = 0 Then
        CritMsg "Informe a Quantidade!"
        DoCmd.CancelEvent
        Exit Sub
    End If
            blnOK = Confirmar("Incluir Produto?" & lin _
            & lin & "Cód. Produto: " & CodProduto.Column(1) & lin _
            & lin & "Descrição   : " & Descrição & lin _
            & lin & "Grade       : " & Grade & lin _
            & lin & "Tamanho     : " & Tamanho & lin _
            & lin & "Valor Unit. : " & strVenda & lin _
            & lin & "Quantidade  : " & Quantidade & lin _
            & lin & "Total Item  : " & strTotal)
            If Not blnOK Then
                Cancel = True
            End If
    Exit_Form_BeforeUpDate:
        Exit Sub
    Err_Form_BeforeUpDate:
        If Err.Number = conErrNotVrNull Then
            CritMsg "Registro com valores inválidos!"
            Cancel = True
        Else
            CritMsg Err.Description
        End If
    Resume Exit_Form_BeforeUpDate
    End Sub


    Assim se o produto ja extiver cadastrado, emite mensagem, passa a variável para Verdadeiro... ao ser atualizado o formulário.. não permite a execução do código acima.


    Um detalhe.... No DCount... terá que colocar dois critérios... um para o produto... e outro para o pedido..

    Pois emitirá a mensagem de produto inserido mesmo em um novo pedido.. por isso precisa aplicar a mais o critério do número do pedido...
    Me lembrei disso agora... depois que digitei este post...

    Mas creio que não será problema para voce fazer isto.

    Qualquer coisa avise.

    Cumprimentos.
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 25/6/2013, 20:47

    Ok. Vou colocar os codigos no sistema. Dai te falo. Pois to na net do celular.
    Obrigadaooooooooooooo
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 25/6/2013, 22:52

    Funcionou, mas está gerando 2 registros na tabela.
    1 com a alteração caso tenha sido encontrado
    o outro fica tudo zerado.

    o Dcount do pedido eu coloco depois do itensdopedido ou antes.

    desculpe sou autodidata e não conheço muito bem o Dcount e o Dlookup.

    Abraços
    avatar
    Convidado
    Convidado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Convidado 26/6/2013, 00:37

    No subform crie uma caixa texto com o nome txtCodProduto e acople-a ao campo CodProduto...
    No Código abaixo segue explicação do porque necessita verificar se o campo CodProduto está preenchido ou não.



        Dim strCodSelect As String
        strCodSelect = strCodSelect & Me!CodProduto.Value & ","
       
        'O Dcount utiliza dois critério para a contagem, um é o CodProduto e o outro é o CodPedido...
        'Precisa dos dois critério porque caso contrário.. mesmo em um novo pedido emitiria a mensagem de produto inserido
        'visto que contaria apenas pelo codProduto

        If DCount("[CodProduto]", "tblItensPedido", "CodProduto=" & Me.CodProduto.Column(0) & " And CodPedido = " & Forms!FrmPedido.CodPedido & "") > 0 Then
            If Not IsNull(strCodSelect) Then
            Dim lngCod As Long
                lngCod = Me.CodProduto.Column(0)
                CancelaIns = True
                MsgBox "Já Cadastrado", vbCritical
                'Como mesmo emitindo aviso de produto cadastrado o registro é gerado
                'Selecionamos o registro e o excluímos porém se a caixa texto txtcod produto estiver preenchida
                'devemos desviar o código, pois excluiríamos o registro do ítem.
                'Pode ocorrer duas situações ao selecionar um produto
                '1 - O produto já está inserido com suas quantidades, o usuário seleciona outro produto e altera o tipo de produto
                '    no subform.
                '2 - O subform está em um novo registro, e seleciona um produto já inserido, neste caso a caixa texto txtCodProduto está com valor 0
                '    então neste caso se o usuário seleciona um produto já inserido, se exclui o registro duplicado
                'Na situação 1, o registro não está em um novo registro... e supondo que o produto seja o produto 099 e o usuário seleciona o 100 iria
                'apenas alterar o registro, porem como não é um novo registro não se pode excluí-lo por isso a necessidade de desviar o código

                If Not IsNull(Me.txtCodProduto) Then GoTo Continuar
                DoCmd.RunCommand acCmdSelectRecord
                DoCmd.RunCommand acCmdDeleteRecord
    Continuar:
                'Remete a posição anterior do formulário...
      
              Me.Undo
                ' Encontrar o registro que coincide com o controle.
      
              Me.RecordsetClone.FindFirst "[CodProduto] = " & lngCod
                Me.Bookmark = Me.RecordsetClone.Bookmark
                Exit Sub
            End If
        End If
       
        Select Case Me.Tabela


    Cumprimentos.
    wpitarelli
    wpitarelli
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 110
    Registrado : 12/07/2010

    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  wpitarelli 26/6/2013, 00:49

    Muito obrigado pela ajuda que foi perfeita.
    Muitíssimo obrigado pela aula sobre a função.
    E muito obrigado por dispor do seu tempo pra me ajudar.

    Solução correta e assunto finalizado.

    Abraços
    avatar
    Convidado
    Convidado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Convidado 26/6/2013, 02:36

    Não se esqueça de clicar no Joinha da mensagem que o auxiliou.

    O Fórum agradece o Retorno.

    Conteúdo patrocinado


    [Resolvido]Inserir produto na tela de pedido Empty Re: [Resolvido]Inserir produto na tela de pedido

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 19:47