Boa Tarde,
Caros,
Sou novato em access e sou até grato a esse forum que me ajudou muito em desenvolver grandes soluções para o meu dia a dia.
Estou tentando utilizar a sugestão colocada pelo JPaulo no meu formulário, onde estando campos marcados sem preencher retonará com mensagem e marcando os campos, o que está funcionando perfeitamente até então.
O problema está quando todos os campos do formulário estão preenchidos, pois mesmo assim a função encerra o código e não está inserindo os dados na tabela.
http://maximoaccess.forumeiros.com/t174-resolvido-problemas-com-formulario-de-preenchimento
Segue como coloquei todos o código:
1 - Função
Public Function valNullControl(frm As Form)
Dim ctl As Control
Dim minhaArray As String
Dim validacaoOk As Byte
validacaoOk = 0
For Each ctl In frm.Controls
If ctl.Tag <> Null Or ctl.Tag <> "" Then
ctl.BackColor = 16777215
End If
Next ctl
For Each ctl In frm.Controls
If ctl.Visible = True Then
If ctl.Tag <> Null Or ctl.Tag <> "" Then
If IsNull(ctl) = True Or ctl = "" Then
ctl.BackColor = 161616
validacaoOk = 1
minhaArray = minhaArray & ctl.Tag & ", "
End If
End If
End If
Next ctl
If validacaoOk = 1 Then MsgBox "Campo Obrigatório: " & minhaArray
End Function
Código no Botão:
Private Sub Salvar_Click()
Dim db As Database
Dim rs As Recordset
If MsgBox("Gravar registro?", vbYesNoCancel, "Opções") = vbYes Then
If valNullControl(Me) = False Then
Exit Sub
End If
Set db = CurrentDb()
Set rs = db.OpenRecordset("BD_Registro_55", dbOpenTable)
rs.AddNew
rs("DT_GNRE") = Me.DT_GNRE
rs("UF_SUBST") = Me.UF_SUBST
rs("BANCO_GNRE") = Me.BANCO_GNRE
rs("AG_GNRE") = Me.AG_GNRE
rs("N_GNRE") = Me.N_GNRE
rs("VLR_GNRE") = Me.VLR_GNRE
rs("DT_VENC") = Me.DT_VENC
rs("MES_ANO") = Me.MES_ANO
rs.Update
rs.Close
Set rs = Nothing
Set db = Nothing
Me.DT_GNRE = Null
Me.UF_SUBST = Null
Me.BANCO_GNRE = Null
Me.AG_GNRE = Null
Me.N_GNRE = Null
Me.VLR_GNRE = Null
Me.DT_VENC = Null
Me.MES_ANO = Null
MsgBox "Registo gravado com sucesso", vbInformation, "Concluído"
Me.DT_GNRE.SetFocus
Else: Exit Sub
End If
End Sub
Desde agradeço,
Luis Neri
Caros,
Sou novato em access e sou até grato a esse forum que me ajudou muito em desenvolver grandes soluções para o meu dia a dia.
Estou tentando utilizar a sugestão colocada pelo JPaulo no meu formulário, onde estando campos marcados sem preencher retonará com mensagem e marcando os campos, o que está funcionando perfeitamente até então.
O problema está quando todos os campos do formulário estão preenchidos, pois mesmo assim a função encerra o código e não está inserindo os dados na tabela.
http://maximoaccess.forumeiros.com/t174-resolvido-problemas-com-formulario-de-preenchimento
Segue como coloquei todos o código:
1 - Função
Public Function valNullControl(frm As Form)
Dim ctl As Control
Dim minhaArray As String
Dim validacaoOk As Byte
validacaoOk = 0
For Each ctl In frm.Controls
If ctl.Tag <> Null Or ctl.Tag <> "" Then
ctl.BackColor = 16777215
End If
Next ctl
For Each ctl In frm.Controls
If ctl.Visible = True Then
If ctl.Tag <> Null Or ctl.Tag <> "" Then
If IsNull(ctl) = True Or ctl = "" Then
ctl.BackColor = 161616
validacaoOk = 1
minhaArray = minhaArray & ctl.Tag & ", "
End If
End If
End If
Next ctl
If validacaoOk = 1 Then MsgBox "Campo Obrigatório: " & minhaArray
End Function
Código no Botão:
Private Sub Salvar_Click()
Dim db As Database
Dim rs As Recordset
If MsgBox("Gravar registro?", vbYesNoCancel, "Opções") = vbYes Then
If valNullControl(Me) = False Then
Exit Sub
End If
Set db = CurrentDb()
Set rs = db.OpenRecordset("BD_Registro_55", dbOpenTable)
rs.AddNew
rs("DT_GNRE") = Me.DT_GNRE
rs("UF_SUBST") = Me.UF_SUBST
rs("BANCO_GNRE") = Me.BANCO_GNRE
rs("AG_GNRE") = Me.AG_GNRE
rs("N_GNRE") = Me.N_GNRE
rs("VLR_GNRE") = Me.VLR_GNRE
rs("DT_VENC") = Me.DT_VENC
rs("MES_ANO") = Me.MES_ANO
rs.Update
rs.Close
Set rs = Nothing
Set db = Nothing
Me.DT_GNRE = Null
Me.UF_SUBST = Null
Me.BANCO_GNRE = Null
Me.AG_GNRE = Null
Me.N_GNRE = Null
Me.VLR_GNRE = Null
Me.DT_VENC = Null
Me.MES_ANO = Null
MsgBox "Registo gravado com sucesso", vbInformation, "Concluído"
Me.DT_GNRE.SetFocus
Else: Exit Sub
End If
End Sub
Desde agradeço,
Luis Neri