MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Ajuda com entrada de dados

    Compartilhe

    jorgek
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 08/12/2012

    [Resolvido]Ajuda com entrada de dados

    Mensagem  jorgek em Qui 18 Fev 2016, 17:15

    Boa tarde a todos! Very Happy
    Primeiro, quero agradecer a todos os mestres q me ajudaram, aprendi bastante, junto com minha dedicação também.
    Depois de alguns meses(rsrs), volto com mais uma dúvida:

    Tenho uma rotina em que em um formulário, existe uma caixa de texto em q o usuário dá a leitura dos pedidos que estão retornando através do leitor e código de barras.

    A questão é a seguinte: existe uma rotina que verifica a quantidade de pedidos que saiu com a que o usuário está inserindo.

    Existia uma falha em que se o usuário registrasse os mesmos pedidos com na mesma quantidade o sistema liberava.

    Eu resolvi esse problema criando uma tabela temporária e uma consulta de inserção, mas se o usuário voltar a tela, terá que liberar a tabela para dar baixa novamente através de um botão.

    Gostaria de saber se alguém tem alguma idéia melhor, utilizando FOR ou alguma outra solução para que não seja necessário o usuário liberar a tabela para dar leitura novamente.

    Desde já agradeço a todos! bounce
    avatar
    Cláudio Machado
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1402
    Registrado : 17/03/2011

    Re: [Resolvido]Ajuda com entrada de dados

    Mensagem  Cláudio Machado em Qui 18 Fev 2016, 19:09

    Boa tarde.
    Provavelmente os números de pedidos não se repetem, certo?

    Então coloque este código no ao sair do seu campo:

    Código:


    'seta variavel recordset
    Set tabela = Me.RecordsetClone
        With tabela
            'verifica se o Pedido já está cadastrado
            .FindFirst "NumeroPedido='" & Me.NumeroPedido & "'"
            'se encontrou então
            If Not .NoMatch Then
                Cancel = True
                'Desfaz o registro
                Me.Undo
                MsgBox "Pedido já Registrado.", vbInformation, "Atenção"
                'exibe o registro já cadastrado
                Me.Bookmark = .Bookmark
              End If
        End With
     Set tabela = Nothing


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  [Você precisa estar registrado e conectado para ver este link.].
    Não esqueça de clicar no Joinha [Você precisa estar registrado e conectado para ver esta imagem.] para agradecer a dica que solucionou seu problema.

    jorgek
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 08/12/2012

    Re: Ajuda com entrada de dados

    Mensagem  jorgek em Sex 19 Fev 2016, 12:59

    Blz, Cláudio.

    Vou tentar aqui e ver se consigo e te falo.

    jorgek
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 08/12/2012

    Re: Ajuda com entrada de dados

    Mensagem  jorgek em Sex 19 Fev 2016, 13:30

    Então, Cláudio. É o seguinte:

    Vi que esse código é para verificar se na tabela já existe o pedido cadastrado, não é mesmo?
    O que eu preciso é o seguinte:

    Tenho a tabela de entrega: "Tb_Entrega" com o campo de ID da saída e a tabela de detalhe da entrega: "Tb_DetEntrega"
    amarrada com ID da saída também.

    A tabela de entrega tem um campo chamado QtdPedido(quantidade de pedidos)

    Quando o motorista retorna da entrega, ele traz os aceites com os números dos pedidos(número mesmo e o código de barras).

    Existe caixa de texto na tela em que o usuário vai lendo esses pedidos um a um e o campo "QtdlPed" deve bater com o campo "TotalPed".

    Antes, eles faziam leitura do mesmo aceite até bater a quantidade de pedidos. Uma certa falha.

    Agora, preciso que, além de bater a quantidade, tem que verificar se esse pedido faz parte da saída e não deixar o usuário
    repetir a leitura do pedido.

    Consegui fazer isso utilizando uma consulta de atualização que marca uma caixa na tabela de detalhe.

    Só que essa tela de retorno tem 2 abas e várias outras rotinas.
    Então, quando o usuário esquece alguma coisa e volta a tela, tem que liberar os campos marcados
    na tabela de detalhe para ele fazer a leitura novamente, já que o campo "QtdPed" foi limpo.

    Acho que consegui explicar. :p

    jorgek
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 08/12/2012

    Re: Ajuda com entrada de dados

    Mensagem  jorgek em Sab 20 Fev 2016, 09:11

    Pessoal, consegui resolver e irei postar como fiz(pelo menos está funcional e está do jeito que eu queria):

    Primeira coisa que fiz foi verificar se o pedido faz parte da saída com Recordset.

    Depois verifico se o campo de quantidade de pedido está em branco(o usuário voltou a tela ou é uma outra saída) para limpar a tabela de verificação.

    Depois, utilizei um Dcount para verificar se o pedido já foi dado leitura.

    E por último, faço a inserção do ID da saída e do número do pedido na tabela de verificação e verifico se o campo de quantidade de pedido está em branco para receber 1 ou então ele irá receber + 1.

    É isso!
    Segue o código:

    Código:

    Dim db As DAO.Database
    Dim rsp As DAO.Recordset
    Dim strSql As String
    Set db = CurrentDb

    Dim PegaPed, PegaIDSaida, PedConfirm


    strSql = "select * from Tb_DetEntrega where IDSaida = " & IDConf & ""
    Set rsp = db.OpenRecordset(strSql)
    With rsp
    .MoveFirst

    PedConfirm = 0

    Do Until rsp.EOF
           
            PegaIDSaida = .Fields(0)
            PegaPed = .Fields(1)

            If Me.QtdPedConf = "" Then
            DoCmd.RunSQL "delete * from Tb_CompaRetornoPed"
            End If
           
            If Me.IDConf = PegaIDSaida And Me.PedidoConf = PegaPed Then
                PedConfirm = 1
               
            End If
           
            rsp.MoveNext
           
            Loop
    End With

    If PedConfirm = 0 Then

    MsgBox "Pedido inexistente ou não faz parte desta saída!", vbExclamation, "Atenção!"
    Exit Sub
    End If


                If DCount("Pedido", "Tb_CompaRetornoPed", "Pedido = " & Me.PedidoConf & "") > 0 Then
                    MsgBox "Este pedido já foi baixado!", vbExclamation, "Atenção!"
                Exit Sub
                End If


    DoCmd.SetWarnings False
    DoCmd.RunSQL "insert into Tb_CompaRetornoPed(IDSaida, Pedido) values (" & PegaIDSaida & ", " & Me.PedidoConf & ")"
           
        If QtdPedConf = "" Then
        QtdPedConf = 1
        Else
        QtdPedConf = QtdPedConf + 1
        End If
        Comando184.Visible = True
        Bt_Salvar.Visible = False
    avatar
    Cláudio Machado
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1402
    Registrado : 17/03/2011

    Re: [Resolvido]Ajuda com entrada de dados

    Mensagem  Cláudio Machado em Seg 22 Fev 2016, 15:26

    Bem, se resolveu, resolvido está.
    Obrigado pelo retorno.
    O Fórum agradece.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  [Você precisa estar registrado e conectado para ver este link.].
    Não esqueça de clicar no Joinha [Você precisa estar registrado e conectado para ver esta imagem.] para agradecer a dica que solucionou seu problema.

      Data/hora atual: Qua 18 Out 2017, 04:56