Amigos.. Dessa vez ta difícil do 3 em 1 funcionar. hehehehe
Tenho um botão onde Adiciono novo registro atraves de um recordset
Ele funciona bem...
Mas tenho alguns if's para alertar de campos não preenchidos...
Ele remete de volta ao form para o usuário preencher corretamente o campo...
Mas agora o problema... depois de corrigido o preenchimento do campo...
ao clicar novamente no botão... dá esse erro... Outras vezes o botão não funciona..
Se puderem me ajudar com os if's desse código fico grato
Private Sub btnNovo_Click()
On Error GoTo Err_btnNovo
If Me!btnNovo.Caption = "LIBERAR CADASTRO" Then
Call DesbloqueiaCampo
Call LimpaCampos
MsgBox "CADASTRO LIBERADO", vbExclamation, "Confirmação"
Me.btnNovo.Caption = "CADASTRAR"
Me.btnNovo.ForeColor = 8519755
Exit Sub
Else
If IsNull(txtID) Or Me.txtID.Value = "" Then GoTo Continuar
If Not IsNull(Me.txtID) Then
MsgBox "O campo identificador do Visitante está preenchido" & vbCrLf & _
"Pode ser que você tentou salvar o mesmo registro seguido" & vbCrLf & _
"ou o campo não foi limpo após a última operação." & vbCrLf & _
"Este processo será Abortado!", vbExclamation, "Confirmação"
Call LimpaCampos
Cancel = True
DoCmd.Close
Exit Sub
Continuar:
If IsNull(txtVisitante) Or Me.txtVisitante.Value = "" Then
MsgBox "Você precisa Preencher o nome do Visitante!!!", vbExclamation, "Confirmação"
Me.txtVisitante.SetFocus
End If
Exit Sub
If IsNull(CboDetento) Or Me.CboDetento.Value = "" Then
MsgBox "Você precisa selecionar o detento a ser visitado!!!", vbExclamation, "Confirmação"
Me.CboDetento.SetFocus
Me.CboDetento.Dropdown
End If
Exit Sub
Dim Db As DAO.Database
Dim ws As DAO.Workspace
Dim rs As DAO.Recordset
Dim NomeBD As String
Dim StrPath As String
Dim I As String
Parametros_de_Inicializacao "SysPen.par"
NomeBD = "Syspen_Be.Accdb"
StrPath = DirBancoDados & NomeBD
Set ws = DBEngine.Workspaces(0)
Set Db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be.accdb", False, False, "MS Access;PWD=senha")
StrSQLVisitantes = ("SELECT * FROM Visitantes")
'"SELECT * FROM Visitantes '"
'LEFT JOIN Detentos ON Visitantes.ID_Visitante=Detentos.ID"
Set rs = Db.OpenRecordset(StrSQLVisitantes)
I = MsgBox("Voce está adicionando novo registro, deseja prosseguir ?" & vbCrLf & _
" Lembre-se que só se pode inserir um Detento a cada vez!", vbYesNo, "Confirmação")
If I = vbYes Then
rs.AddNew ' Abre a edição do registro
'********PÁGINA 01*************************************************************************
rs![Visitante] = Me.txtVisitante
rs![EnderecoVis] = Me.txtEndereco
rs![BairroVis] = Me.txtBairro
rs![EstadoVis] = Me.cboEstado
rs![CidadeVis] = Me.cboCidade
rs![DocumentosVis] = Me.txtDocumentos
rs![TelefoneResidencialVis] = Me.TxtTelResidencial
rs![AnotacoesVisitante] = Me.txtAnot
rs![RelaçãodeTutorVis] = Me.CboRelacao
rs![BloquearVisitante] = Me.txtSelecao
rs![ID_Visitante] = Me.txtIDDetento
' Atualiza os dados na tabela
rs.Update
MsgBox "Registro adicionado com sucesso!!!" & vbCrLf & _
"Vá no módulo de inserir fotos, para aplicar" & vbCrLf & _
"as fotos do Visitante", vbInformation, "Atenção!"
Else
Cancel = True
End If
End If
rs.Close
Db.Close
Set rs = Nothing
Set Db = Nothing
Exit Sub
Call LimpaCampos
Call BloqueiaCampo
Exit_btnNovo:
Exit Sub
Err_btnNovo:
MsgBox "Erro número: " & err.Number & vbLf & vbLf & err.Description, vbCritical, "Syspen!"
Resume Exit_btnNovo
End Sub
Tenho um botão onde Adiciono novo registro atraves de um recordset
Ele funciona bem...
Mas tenho alguns if's para alertar de campos não preenchidos...
Ele remete de volta ao form para o usuário preencher corretamente o campo...
Mas agora o problema... depois de corrigido o preenchimento do campo...
ao clicar novamente no botão... dá esse erro... Outras vezes o botão não funciona..
Se puderem me ajudar com os if's desse código fico grato
Private Sub btnNovo_Click()
On Error GoTo Err_btnNovo
If Me!btnNovo.Caption = "LIBERAR CADASTRO" Then
Call DesbloqueiaCampo
Call LimpaCampos
MsgBox "CADASTRO LIBERADO", vbExclamation, "Confirmação"
Me.btnNovo.Caption = "CADASTRAR"
Me.btnNovo.ForeColor = 8519755
Exit Sub
Else
If IsNull(txtID) Or Me.txtID.Value = "" Then GoTo Continuar
If Not IsNull(Me.txtID) Then
MsgBox "O campo identificador do Visitante está preenchido" & vbCrLf & _
"Pode ser que você tentou salvar o mesmo registro seguido" & vbCrLf & _
"ou o campo não foi limpo após a última operação." & vbCrLf & _
"Este processo será Abortado!", vbExclamation, "Confirmação"
Call LimpaCampos
Cancel = True
DoCmd.Close
Exit Sub
Continuar:
If IsNull(txtVisitante) Or Me.txtVisitante.Value = "" Then
MsgBox "Você precisa Preencher o nome do Visitante!!!", vbExclamation, "Confirmação"
Me.txtVisitante.SetFocus
End If
Exit Sub
If IsNull(CboDetento) Or Me.CboDetento.Value = "" Then
MsgBox "Você precisa selecionar o detento a ser visitado!!!", vbExclamation, "Confirmação"
Me.CboDetento.SetFocus
Me.CboDetento.Dropdown
End If
Exit Sub
Dim Db As DAO.Database
Dim ws As DAO.Workspace
Dim rs As DAO.Recordset
Dim NomeBD As String
Dim StrPath As String
Dim I As String
Parametros_de_Inicializacao "SysPen.par"
NomeBD = "Syspen_Be.Accdb"
StrPath = DirBancoDados & NomeBD
Set ws = DBEngine.Workspaces(0)
Set Db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be.accdb", False, False, "MS Access;PWD=senha")
StrSQLVisitantes = ("SELECT * FROM Visitantes")
'"SELECT * FROM Visitantes '"
'LEFT JOIN Detentos ON Visitantes.ID_Visitante=Detentos.ID"
Set rs = Db.OpenRecordset(StrSQLVisitantes)
I = MsgBox("Voce está adicionando novo registro, deseja prosseguir ?" & vbCrLf & _
" Lembre-se que só se pode inserir um Detento a cada vez!", vbYesNo, "Confirmação")
If I = vbYes Then
rs.AddNew ' Abre a edição do registro
'********PÁGINA 01*************************************************************************
rs![Visitante] = Me.txtVisitante
rs![EnderecoVis] = Me.txtEndereco
rs![BairroVis] = Me.txtBairro
rs![EstadoVis] = Me.cboEstado
rs![CidadeVis] = Me.cboCidade
rs![DocumentosVis] = Me.txtDocumentos
rs![TelefoneResidencialVis] = Me.TxtTelResidencial
rs![AnotacoesVisitante] = Me.txtAnot
rs![RelaçãodeTutorVis] = Me.CboRelacao
rs![BloquearVisitante] = Me.txtSelecao
rs![ID_Visitante] = Me.txtIDDetento
' Atualiza os dados na tabela
rs.Update
MsgBox "Registro adicionado com sucesso!!!" & vbCrLf & _
"Vá no módulo de inserir fotos, para aplicar" & vbCrLf & _
"as fotos do Visitante", vbInformation, "Atenção!"
Else
Cancel = True
End If
End If
rs.Close
Db.Close
Set rs = Nothing
Set Db = Nothing
Exit Sub
Call LimpaCampos
Call BloqueiaCampo
Exit_btnNovo:
Exit Sub
Err_btnNovo:
MsgBox "Erro número: " & err.Number & vbLf & vbLf & err.Description, vbCritical, "Syspen!"
Resume Exit_btnNovo
End Sub