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] Regra de validação para inserir dados em tabela a partir de botão em formulário

    avatar
    bellaF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 40
    Registrado : 05/04/2017

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  bellaF 5/4/2017, 18:44

    Olá pessoal do fórum!
    Sou nova aqui, então em caso de erro, por favor me avisem.

    Meu problema é o seguinte: estou criando um BD para controle de pedidos. Eu tenho uma tabela base com todos os meus pedidos criados. E já tenho um formulário que eu entro com o número desse pedido e ele me atualiza com as informações dele: quantidade de peças, data de criação, cliente, etc.

    Eu preciso então, que ao fazer essa busca, eu também tenha a opção de clicar em um botão (dentre vários) que diga que o pedido foi empacotado/faturado/enviado/recebido/etc.
    Eu já criei esses botões, e eles funcionam bem, adicionando em uma tabela nova o número do pedido e data/hora que cliquei no botão determinado (cada botão tem uma coluna específica).
    No entanto, preciso agora que:
    1) Esse número do pedido não se repetisse, ou seja, se eu já tenho uma data de envio/recebimento/etc, que fosse impossível alterá-la - só possível acrescentar as outras datas disponíveis (nem atualizar o campo nem criar uma nova linha com o mesmo número do pedido)
    2) E que também fosse impossível eu colocar uma data de recebimento menor que a de envio, e de envio menor que a de faturamento, etc.

    O código que usei para um dos botões (ex.: recebimento) é:

    Private Sub btnRecebimento_Click()
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_status")
    rs.AddNew
    rs("pedido") = Me.txtPed.Value 'valor do pedido - input do formulário
    rs("stsRecebido") = Now ()
    rs.Update
    rs.Close
    db.Close

    End Sub

    Alguém saberia me ajudar?
    Obrigada!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8272
    Registrado : 05/11/2009

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  Alexandre Neves 5/4/2017, 20:52

    Boa noite, e bem-vinda ao fórum

    Private Sub btnRecebimento_Click()
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_status")
    'verifica se já existe pedido com este número
    id dcount("*","tbl_status","pedido=" & txtPed.Value)>0 then msgbox "Já tem registo com este pedido" : goto naoexecuta
    'verifica se a data recebimento já está preenchida
    id isdate(dlookup("stsRecebido","tbl_status","pedido=" & txtPed.Value)) then msgbox "Já tem registo com data recebimento preenchida" : goto naoexecuta
    'verifica se a data recebimento anterior à data envio
    id dcount("*","tbl_status","stsRecebido'verifica se a data envio anterior à data faturamento
    id dcount("*","tbl_status","DataEnviors.AddNew
    rs("pedido") = Me.txtPed.Value 'valor do pedido - input do formulário
    rs("stsRecebido") = Now ()
    rs.Update
    NaoExecuta:
    rs.Close
    db.Close

    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    bellaF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 40
    Registrado : 05/04/2017

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  bellaF 5/4/2017, 21:29

    Olá Alexandre.
    Muita obrigada pela ajuda.

    A parte das verificações de datas anteriores não está funcionando, está dando erro de compilação. Pode me ajudar?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8272
    Registrado : 05/11/2009

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  Alexandre Neves 5/4/2017, 22:31

    Código:
    Private Sub btnRecebimento_Click()
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_status")
    'verifica se já existe pedido com este número
    id dcount("*","tbl_status","pedido=" & txtPed.Value)>0 then msgbox "Já tem registo com este pedido" : goto naoexecuta
    'verifica se a data recebimento já está preenchida
    if isdate(dlookup("stsRecebido","tbl_status","pedido=" & txtPed.Value)) then msgbox "Já tem registo com data recebimento preenchida" : goto naoexecuta

    'verifica se a data recebimento é anterior à data envio
    if now()<dlookup("DataEnvio","tbl_status","pedido=" & txtPed.Value")  then msgbox "A data de recebimento não pode ser anterior à data de envio" : goto naoexecuta

    rs.AddNew
    rs("pedido") = Me.txtPed.Value 'valor do pedido - input do formulário
    rs("stsRecebido") = Now ()
    rs.Update
    NaoExecuta:
    rs.Close
    db.Close

    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    bellaF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 40
    Registrado : 05/04/2017

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  bellaF 6/4/2017, 19:24

    Olá Alexandre.
    Agradeço o retorno. O código continua dando problema. Ao executar dá o seguinte erro:
    Erro em tempo de execução '2465':
    O Microsoft Access não pode localizar o campo '|1' referido em sua expressão.
    E a linha
    If DCount("*","tbl_status","pedido=" & txtPed.Value)>0 then msgbox "Já tem registo com este pedido" : goto naoexecuta
    aparece destacada quando clico em depurar. O que fiz de errado?
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1310
    Registrado : 21/01/2012

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  Cláudio Más 6/4/2017, 20:03

    Olá,

    Uma alternativa é tornar o campo "pedido" um índice exclusivo na tabela "tbl_status", conforme a imagem abaixo:

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Indice10

    Então o código ficaria assim:

    Private Sub btnRecebimento_Click()
    On Error GoTo err_btnRecebimento_Click

    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_status")
    rs.AddNew
    rs("pedido") = Me.txtPed.Value 'valor do pedido - input do formulário
    rs("stsRecebido") = Now()
    rs.Update
    rs.Close
    db.Close

    exit_btnRecebimento_Click:
       Exit Sub
       
    err_btnRecebimento_Click:
       MsgBox "Já tem registo com este pedido"
       Resume exit_btnRecebimento_Click
       
    End Sub
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1310
    Registrado : 21/01/2012

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  Cláudio Más 6/4/2017, 20:12

    Para controlar as datas, use o evento "Antes de atualizar" do formulário:

    Private Sub Form_BeforeUpdate(Cancel As Integer)

    If Me!stsRecebido < Me!stsEnviado Then
       MsgBox "Data de recebimento inválida"
       Cancel = True
    End If

    End Sub
    avatar
    bellaF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 40
    Registrado : 05/04/2017

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  bellaF 6/4/2017, 21:16

    Boa tarde Cláudio,
    Agradeço a ajuda!! Mas fiquei um pouco confusa (desculpe, sou bem nova no access e vba).
    Acabei alterando um pouco o código, e está de maneira como segue abaixo.
    Eu preciso agora que ele:
    1) Verifique se o pedido que eu quero colocar a data de recebimento exista em uma tabela de registro tbl_inbound
    2) Que verifique que a data já está preenchida
    3) Que a data não seja anterior ao envio
    4) Que ao invés da mensagem de erro, apareça um mensagem personalizada: "Já existe registro desse pedido." Nessa parte, utilizei sua dica e coloquei o numero do pedido como chave primaria da tabela, então ele realmente já não me permite cadastrar o recebimento do mesmo pedido duas vezes, porém a mensagem de erro que aparece é bem ruim.

    Private Sub btRecebimento_Click()

    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_status_log")

    'verifica se existe cadastro desse pedido na tabela de pedidos criados (tbl_inbound)
    If DCount("*","tbl_inbound","pedido=" & txtPed.Value)=0 then msgbox "Não existe registro desse pedido." : goto naoexecuta

    'verifica se a data recebimento já está preenchida
    If IsDate(dlookup("stsRecebido","tbl_status_log","pedido=" & txtPed.Value)) then msgbox "Já existe data de recebimento para esse pedido." : goto naoexecuta

    'verifica se a data recebimento é anterior à data envio
    If Now() < DLookup("DataEnvio","tbl_status_log","pedido=" & txtPed.Value") then msgbox "A data de recebimento não pode ser anterior à data de envio." : goto naoexecuta

    rs.AddNew
    rs("pedido") = Me.txtPed.Value 'valor do pedido - input do formulário
    rs("DataRecebido") = Now()
    rs("stsRecebido") = "Sim"
    rs("StatusFinal") = "Recebido"
    rs.Update
    NaoExecuta:
    rs.Close
    db.Close
    Me.pedido.SetFocus

    End Sub
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1310
    Registrado : 21/01/2012

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  Cláudio Más 7/4/2017, 00:56

    Oi Isabella, confuso fiquei eu! Smile

    Poderia enviar uma cópia do BD?
    Iria facilitar bastante com a solução.
    avatar
    bellaF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 40
    Registrado : 05/04/2017

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  bellaF 7/4/2017, 14:41

    Olá Cláudio!
    Desculpe se foi mal explicado.
    Estou enviando anexo o BD.
    Você vai reparar que ao clicar no botão no formulario, ele gera um erro.
    Nesse código, a minha tentativa foi de fazer conforme expliquei acima, e ainda não adicionei a parte do erro (item 4).
    Tente usar o Pedido numero 1234567890 [enter] para entender o funcionamento do formulário.
    Obrigada pela disposição.
    avatar
    bellaF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 40
    Registrado : 05/04/2017

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  bellaF 7/4/2017, 14:43

    Desculpe, faltou o arquivo!
    Anexos
    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário AttachmentControle de Pedidos.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (69 Kb) Baixado 8 vez(es)
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1310
    Registrado : 21/01/2012

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  Cláudio Más 7/4/2017, 16:20

    Boa tarde Isabella,

    Fiz alguns ajustes no código:

    Código:

    Private Sub btRecebido_Click()
    On Error GoTo err_btRecebido_Click

    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_status_log")

    'verifica se existe cadastro desse pedido na tabela de pedidos criado tbl_inbound
    If DCount("*", "tbl_inbound", "Pedido='" & txtPed.Value & "'") = 0 Then MsgBox "Não existe registro desse pedido.": GoTo NaoExecuta

    'verifica se a data de recebimento já está preenchida
    If IsDate(DLookup("stsRecebido", "tbl_status_log", "Pedido='" & txtPed.Value & "'")) Then MsgBox "Já existe data de recebimento para esse pedido.": GoTo NaoExecuta

    'verifica se a data recebimento é anterior à data envio
    If Now() < (DLookup("DataEnvio", "tbl_status_log", "pedido='" & txtPed.Value & "'")) Then MsgBox "A data de recebimento não pode ser anterior à data de envio.": GoTo NaoExecuta

    rs.AddNew
    rs("Pedido") = Me.txtPed.Value 'valor do pedido - input do formulário
    rs("DataRecebido") = Now()
    rs("stsRecebido") = True
    rs("StatusFinal") = "Recebido"
    rs.Update

    NaoExecuta:
    rs.Close
    db.Close
    Me.txtPed.SetFocus

    exit_btRecebido_Click:
       Exit Sub
       
    err_btRecebido_Click:
       MsgBox "Já existe registro desse pedido."
       Resume exit_btRecebido_Click
       
    End Sub
    avatar
    bellaF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 40
    Registrado : 05/04/2017

    [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário Empty Re: [Resolvido] Regra de validação para inserir dados em tabela a partir de botão em formulário

    Mensagem  bellaF 7/4/2017, 17:41

    Super resolvido, Cláudio!
    Muito muito obrigada! Very Happy

      Data/hora atual: 27/1/2023, 04:43