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

    [Resolvido]Loop de Aviso contra Erros

    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Loop de Aviso contra Erros Empty Loop de Aviso contra Erros

    Mensagem  Luiz Carlos Junior 12/4/2013, 13:01

    Beleza Feras?
    Tenho um botão Inserir que inclui os dados digitados no form Dobras em uma tb_Dobras.
    Acontece que não estou conseguindo fazer um loop contra erros do tipo:

    Se não digitei nada no form e cliquei no botão Inserir, ele acusa falta registro e trava. Tentei If, Do while, mas acho que não inseri corretamente os comandos.
    Alguma luz?
    Segue o código do botão e o exemplo anexo:

    Private Sub cmdINSERIR_Click()

    Dim DB As DAO.Database
    Dim rs, rs2, rs3 As DAO.Recordset

    Me.txtREGSUB.Enabled = True
    Me.txtREGSUP.Enabled = True
    Set DB = CurrentDb
    Set rs = DB.OpenRecordset("Select * from tb_Func Where REG_FUNC= " & Me.txtREGSUP & "")
    Set rs2 = DB.OpenRecordset("Select * from tb_Func Where REG_FUNC= " & Me.txtREGSUB & "")
    Me.cmbNOMESUP = rs("NOME_FUNC")
    Me.cmbNOMESUB = rs2("NOME_FUNC")

    Set rs3 = DB.OpenRecordset("Select * from tb_Dobras Where REG_SUP= " & Me.txtREGSUP & "")
    Me.lstDobras.ColumnCount = rs3.Fields.Count
    rs3.AddNew
    rs3("REG_SUP") = Me.txtREGSUP.Value
    rs3("NOME_SUP") = Me.cmbNOMESUP.Value
    rs3("DATA_FALTA") = Me.txtDATA.Value
    rs3("NOME_SUB") = Me.cmbNOMESUB.Value
    rs3("REG_SUB") = Me.txtREGSUB.Value
    rs3("MOTIVO_FALTA") = Me.cmbMOTIVO.Value
    rs3.Update
    rs3.Close
    DB.Close
    MsgBox ("As dobras foram cadastradas com sucesso!"), vbInformation + vbOKOnly, "Cadastro de Dobras"
    Limpar
    Me.cmbNOMESUP.SetFocus
    Me.txtREGSUB.Enabled = False
    Me.txtREGSUP.Enabled = False
    Me.lstDobras.RowSource = "tb_Dobras"

    End Sub
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Cláudio Machado 12/4/2013, 19:11

    Olá Chumbrega.
    Veja se é isto.

    Utilizei o comando IF juntamente com o ElseIf, estude o código.

    Dim DB As DAO.Database
    Dim rs, rs2, rs3 As DAO.Recordset

    If IsNull(Me!txtDIA) Then
    MsgBox "Informa o dia da Falta.", vbInformation, "Informando"

    ElseIf IsNull(Me!cmbNOMESUP) Then
    MsgBox "Informa o nome do Suplente.", vbInformation, "Informando"

    ElseIf IsNull(Me!cmbNOMESUB) Then
    MsgBox "Digite o nome substituido.", vbInformation, "Informando"

    Else

    Me.txtREGSUB.....


    Saudações.


    .................................................................................
    " 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  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Loop de Aviso contra Erros 90dssg para agradecer a dica que solucionou seu problema.
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Luiz Carlos Junior 12/4/2013, 19:52

    Boa Cláudio, funfou perfeitamente.
    Mas tem um outro problema de erro tb.
    Quando o frm abre, ele pede, em uma InputBox, o mês das dobras. Pois bem, se não digito nada ele continua pedindo o número infinitamente. Gostaria que se o cliente clicasse em cancelar, voltasse ao form Menu. Além disso, gostaria que só pudesse ser digitado neste input números de 1 a 12. Letras, números fora deste intervalo e outros caracteres, se digitados, apareceria uma mensagem avisando "Somente Números de 1 a 12" e retornaria ao Input.
    Deu pra entender?
    Agradeço desde já pela força.
    Abraços.

    Luiz Carlos Junior
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Cláudio Machado 12/4/2013, 20:47

    Caramba !!! Complicado sua explicação !!


    Última edição por Cláudio Machado em 12/4/2013, 21:43, editado 1 vez(es)


    .................................................................................
    " 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  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Loop de Aviso contra Erros 90dssg para agradecer a dica que solucionou seu problema.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Cláudio Machado 12/4/2013, 20:54

    Quanto ao digitar somente números, coloque isto no Ao Pressionar a tecla da caixa:

    Use este código no evento change (ao alterar) da textbox:

    itexto = txtDIA.Text

    If Not IsNumeric(itexto) Then
    MsgBox "apenas numeros"
    SendKeys "{Home}+{end}"
    End If


    Última edição por Cláudio Machado em 12/4/2013, 21:41, editado 1 vez(es)


    .................................................................................
    " 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  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Loop de Aviso contra Erros 90dssg para agradecer a dica que solucionou seu problema.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Cláudio Machado 12/4/2013, 21:38

    Quanto á limitar a digitação de 1 á 12, faça o seguinte:

    Coloque este código após atualizar da caixa de texto

    If Me.txtDIA > 12 Then
    MsgBox "Somente números de 1 á 12", vbInformation, "Informando"
    me.txtDIA.SetFocus
    Else

    Select Case num
    Case 1
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/01/2013")
    Case 2
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/02/2013")
    Case 3
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/03/2013")
    Case 4
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/04/2013")
    Case 5
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/05/2013")
    Case 6
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/06/2013")
    Case 7
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/07/2013")
    Case 8
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/08/2013")
    Case 9
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/09/2013")
    Case 10
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/10/2013")
    Case 11
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/11/2013")
    Case 12
    Me.txtDATA.Value = Format(Me.txtDIA.Value & "/12/2013")
    End Select

    End If


    .................................................................................
    " 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  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Loop de Aviso contra Erros 90dssg para agradecer a dica que solucionou seu problema.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Cláudio Machado 12/4/2013, 21:47

    Quanto ao inputbox.
    Acho que seria melhor pra tratar e para o usuário se você criasse um form para abrir este outro, assim ficaria muito melhor para trabalhar e operar.

    É só uma opinião.

    Saudações.


    .................................................................................
    " 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  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Loop de Aviso contra Erros 90dssg para agradecer a dica que solucionou seu problema.
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Luiz Carlos Junior 13/4/2013, 02:53

    A dica da formatação do txtDIa foi útil, valeu.
    Porém, onde quero esses intervalos específicos é no InputBox, que é onde é selecionado o mês das dobras.
    A dica de usar um form é boa, mas queria compreender como usar o InputBox.
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Luiz Carlos Junior 15/4/2013, 18:29

    Boa tarde feras.
    Procurando sobre o assunto aqui no fórum, encontrei o que precisava em uma dica do Mestre JPaulo.
    Ta funfando que é uma beleza...hehehe
    Valeu pelas dicas.
    Segue o link onde encontrei a dica:

    http://maximoaccess.forumeiros.com/t314-resolvidoaceitar-apenas-numero-na-inputbox

    Abraços.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Cláudio Machado 15/4/2013, 20:38

    Que bom que conseguiu.
    Obrigado pelo retorno o fórum agradece.
    Saudações.


    .................................................................................
    " 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  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Loop de Aviso contra Erros 90dssg para agradecer a dica que solucionou seu problema.

    Conteúdo patrocinado


    [Resolvido]Loop de Aviso contra Erros Empty Re: [Resolvido]Loop de Aviso contra Erros

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 22:32