Ir para conteúdo
Fórum Script Brasil
  • 0

verificar campos em branco


Gil Kléber

Pergunta

Olá Pessoal! Depois de algum tempo de sossego, eis aqui mais um dúvida. Pequena, mas que está me tirando a paciencia... vejamos se alguém poderia me dar uma solução.

Era uma vez, um formulário onde se faziam os registro de pagamento, com os campos:

dtPagto

tipoPago(dinheiro, cheque, cartão...)

valor...

e os campos complementares, para os pagamentos feitos em Cheque,

dtCheque

numCheque

bancoCheque

titularCheque

Pois bem.. gostaria de FORÇAR o preenchimento de todos!

Fiz algumas coisinhas que me ajudam, por exemplo:

no campo numCheque, ele verifica se o anterior (dtCheque) foi preenchido.. e sussessivamente. Mas, se a pessoa que efetuar o lançamento não se utilizar da tecla TAB e sim do mouse, e depois de preencher apenas o campo dtCheque, por exemplo, clicar no botão de navegação de registro e pular pra o próximo, ele vai aceitar...

Então a questão é, tem como, ANTES de sair do registro, ele verificar se o tipo de pagamento = Cheque e que TODOS os campos complementares estão preechidos? E se não estiverem, Mostrar uma mensagem e depois mover o foco pra o campo em branco?

Se houver como, usarei isso pra muitas outras situações. Realmente será muito útil pra mim.

Obrigado pela ajuda pessoal

Abraços a todos!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Cria um modulo com o código:

Sub verificaCampos(frm As Form)
On Error GoTo Erro
    Dim ctrl As Control
    
    For Each ctrl In frm.Controls
        Select Case ctrl.ControlType
            Case acTextBox, acListBox, acComboBox
                If ctrl.ControlSource = Empty Then
                    MsgBox "Existem campos sem preechimento.", vbInformation
                    GoTo Sair
                End If
            Case Else
        End Select
    Next ctrl
    
Sair:
    Exit Sub
    
Erro:
    MsgBox Err.Description, vbCritical
    Resume Sair
End Sub
E chama ele de qualquer form assim:
verificaCampos Me

Aí tem ali acTextBox, acListBox e acComboBox que são s tipos de controles que ele verifica

Acho que isso resolve seu probema :lol:

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que isso vai resolver sim, mas teriam 2 questões pendentes ainda:

Eu preciso verificar isso, ANTES de sair do registro.. e só no caso do pagamento ser feito em cheque.

Como fazer?

tudo bem.. acho que pro pagamento em cheque, faria algo do tipo:

if me.pagamento="cheque" then

verificaCampos Me

else

end if

mas como fazer pra verificar esse campos ANTES de sair do registro?

Obrigado pela ajuda!

Link para o comentário
Compartilhar em outros sites

  • 0

Primeira coisa, como as informações são exclusivas dos cheques, recomendo você a fazer uma tabela com dados específicos dos cheques, seria algo assim

Tabela: Pagamentos

id_pgto NOT NULL AUTO_INCREMENT,

data_pgto DateTime,

valor_pgto Money,

tipo_pgto Varchar(2), -- Aqui você coloca 'ch' para cheque, 'di' para dinheiro e 'cc' para cartão, por exemplo

PRIMARY KEY(id_pgto)

Tabela: Cheques

id_pgto int,

dt_cheque DateTime,

n_cheque varchar(20) , -- não sei o tamanho e a composição do número de um cheque

bco_cheque varchar(20),

ttl_cheque,

PRIMARY KEY(id_pgto)

Assim você gerecia melhor o banco, evitando campos em branco no caso de cartão e dinheiro

Para referenciá-los use um JOIN depois

Outra coisa que percebi é que você fez um formulário contínuo dos registros, eu não gosto muito disso, prefiro fazer no "braço" hehehe

Ah, claro... o Evento do Form é AfterInsert

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço muito a sua ajuda!

Me foi muito esclarecedor, mas acabei fazendo de um jeito mais trabalhoso, porém foi o que resolvi na hora, porque tinha que resolver logo isso.

Mas com certeza, o seu jeito é mais "profissional" então vou testar as alterações sugeridas e depois posto o resultado.

O que fiz foi "montar" meus próprios botões de navegações e colocar o seguinte código em cada um, alterando apenas a linha docmd.GoToRegister...

Muito Obrigado!

If Me.Tipo = "cheque" And Not IsNull(Me.bancoCheque) And Not IsNull(Me.numeroCheque) And Not IsNull(Me.dataCheque) And Not IsNull(Me.titularCheque) Or Me.Tipo <> "cheque" Or Me.Entrada_saida = "entrada" Or IsNull(Me.Data) Then

DoCmd.GoToRecord , , acNext

Else

MsgBox "Preencha os campos em branco!!!", vbInformation

If IsNull(Me.bancoCheque) Then

Me.bancoCheque.SetFocus

ElseIf IsNull(Me.numeroCheque) Then

Me.numeroCheque.SetFocus

ElseIf IsNull(Me.dataCheque) Then

Me.dataCheque.SetFocus

Else

Me.titularCheque.SetFocus

End If

End If

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...