Boa tarde a todos
Com a ajuda do Piloto consegui resolver a questão de validar campos sim ou não, conforme o código 1.
Agora para diminuir a programação gostaria de fazer referencia a diversos campos. Como tenho 12 campos Sim ou Não, queria utilizar uma função para fazer referencia a eles. Estou tentando usar o código 2, mas não esta dando certo, dá o erro 438 O objeto não aceita esta propriedade ou metodo na linha If Not (ctl) Then.
Tem como fazer isso?
Código 1
Option Explicit
Dim Cancela As Boolean
Dim Cancel As Boolean
Private Sub DoencaFamilia_BeforeUpdate(Cancel As Integer)
If Not DoencaFamilia Then
Cancel = True
Dim Mensagem, estilo, Titulo, resposta
Mensagem = "Você deseja realmente desmarcar esta opção? " & Chr(13) & "Deseja continuar ?"
estilo = vbYesNo + vbExclamation + vbDefaultButton2
Titulo = "Confirmação"
resposta = MsgBox(Mensagem, estilo, Titulo)
If resposta = vbNo Then Cancela = True: Exit Sub
Cancel = False
DoCmd.OpenQuery "Consulta1", acViewNormal, acEdit
End If
End Sub
Private Sub DoencaFamilia_Click()
If Cancela = True Then Cancela = False: Exit Sub
If Not DoencaFamilia Then
Cancel = True
Else
DoCmd.OpenForm "FO-DoFam"
End If
End Sub
Código 2
Option Explicit
Dim Cancela As Boolean
Dim Cancel As Boolean
Private Function ValidaCampos() As Boolean
Dim ctl As Control
Dim strName As String
For Each ctl In Me.Controls
If Not (ctl) Then (linha que dá erro)
Cancel = True
Dim Mensagem, estilo, Titulo, resposta
Mensagem = "Você deseja realmente desmarcar esta opção? " & Chr(13) & "Deseja continuar ?"
estilo = vbYesNo + vbExclamation + vbDefaultButton2
Titulo = "Confirmação"
resposta = MsgBox(Mensagem, estilo, Titulo)
If resposta = vbNo Then Cancela = True: Exit Function
Cancel = False
DoCmd.OpenQuery "Consulta1", acViewNormal, acEdit
End If
Next ctl
End Function
Private Sub DoencaFamilia_BeforeUpdate(Cancel As Integer)
Call ValidaCampos
End Sub
Private Sub DoencaFamilia_Click()
If Cancela = True Then Cancela = False: Exit Sub
If Not DoencaFamilia Then
Cancel = True
Else
DoCmd.OpenForm "FO-DoFam"
End If
Agradeço a atenção de todos.
Menezes
Com a ajuda do Piloto consegui resolver a questão de validar campos sim ou não, conforme o código 1.
Agora para diminuir a programação gostaria de fazer referencia a diversos campos. Como tenho 12 campos Sim ou Não, queria utilizar uma função para fazer referencia a eles. Estou tentando usar o código 2, mas não esta dando certo, dá o erro 438 O objeto não aceita esta propriedade ou metodo na linha If Not (ctl) Then.
Tem como fazer isso?
Código 1
Option Explicit
Dim Cancela As Boolean
Dim Cancel As Boolean
Private Sub DoencaFamilia_BeforeUpdate(Cancel As Integer)
If Not DoencaFamilia Then
Cancel = True
Dim Mensagem, estilo, Titulo, resposta
Mensagem = "Você deseja realmente desmarcar esta opção? " & Chr(13) & "Deseja continuar ?"
estilo = vbYesNo + vbExclamation + vbDefaultButton2
Titulo = "Confirmação"
resposta = MsgBox(Mensagem, estilo, Titulo)
If resposta = vbNo Then Cancela = True: Exit Sub
Cancel = False
DoCmd.OpenQuery "Consulta1", acViewNormal, acEdit
End If
End Sub
Private Sub DoencaFamilia_Click()
If Cancela = True Then Cancela = False: Exit Sub
If Not DoencaFamilia Then
Cancel = True
Else
DoCmd.OpenForm "FO-DoFam"
End If
End Sub
Código 2
Option Explicit
Dim Cancela As Boolean
Dim Cancel As Boolean
Private Function ValidaCampos() As Boolean
Dim ctl As Control
Dim strName As String
For Each ctl In Me.Controls
If Not (ctl) Then (linha que dá erro)
Cancel = True
Dim Mensagem, estilo, Titulo, resposta
Mensagem = "Você deseja realmente desmarcar esta opção? " & Chr(13) & "Deseja continuar ?"
estilo = vbYesNo + vbExclamation + vbDefaultButton2
Titulo = "Confirmação"
resposta = MsgBox(Mensagem, estilo, Titulo)
If resposta = vbNo Then Cancela = True: Exit Function
Cancel = False
DoCmd.OpenQuery "Consulta1", acViewNormal, acEdit
End If
Next ctl
End Function
Private Sub DoencaFamilia_BeforeUpdate(Cancel As Integer)
Call ValidaCampos
End Sub
Private Sub DoencaFamilia_Click()
If Cancela = True Then Cancela = False: Exit Sub
If Not DoencaFamilia Then
Cancel = True
Else
DoCmd.OpenForm "FO-DoFam"
End If
Agradeço a atenção de todos.
Menezes