Olá,
Tenho um formulario consulta de cliente por nome, onte tb posso cadastrar novo, através de um botão,neste frm existe uma combo box que filtra o cliente pelo nome. O meu problema é quando não encontrar o cliente na base do BD,apareça uma mensagem informando: Cliente não encontrado na base de dados. deseja cadastrá-lo? sim, não. Se sim libera o frm para editar se não simplesmente fecha a mensagem e continua no mesmo frm vazio, limpando a caixa da combo, onde foi digitado o cliente.
Deu pra entender?
Quando o cliente está cadastrado, tá tdo beleza, ele preenche automaticamente o frm com os dados do cliente.
entretanto qdo o cliente não está cadastrado na base, dá erro.
Este são os códigos e a função que utilizo para esta combo,o problema é que ele está dando erro: GRATA, ABS
Private Sub cbocliente_AfterUpdate()
DoCmd.ApplyFilter , "CodigoCliente = " & Me!cbocliente.Column(0) ' Codigocliente chave primaria, cbocliente, onde vai buscar o nome desejado
Me!cbocliente = Null 'deixa a combo vazia, limpa.
End Sub
Private Sub cbocliente_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
If Confirmar("Deseja adicionar " & NewData & " automaticamente ao cadastro?") Then
If CurrentProject.AllForms("FrmRecepNomeCliente").IsLoaded Then
DoCmd.Close acForm, "FrmRecepNomeCliente", acSavePrompt
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("TblCliente")
rs.AddNew
rs!Nome = NewData
rs.Update
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
Response = acDataErrAdded
Else
Me.cbocliente.Undo
If Not Confirmar("Deseja abrir o cadastro e cadastrar agora?") Then Exit Sub
If CurrentProject.AllForms("FrmRecepNomeCliente").IsLoaded Then
If Confirmar("O formulário já está aberto." & vbCrLf & _
"Deseja alternar para a janela do formulário?") Then
Forms!FrmRecepNomeCliente.SetFocus
Else
DoCmd.OpenForm "FrmRecepNomeCliente"
DoCmd.GoToRecord , "", acNewRec
End If
End If
End Sub
'Faz uma pergunta ao usuário e retorma True se a resposta for SIM, e false se a resposta for NÃO
Public Function Confirmar(sMensagem As String) As Boolean
Dim intResp As Integer
intResp = MsgBox(sMensagem, vbYesNo + vbQuestion, "Confirmação")
If intResp = vbYes Then
Confirmar = True
Else
Confirmar = False
End If
End Function
Tenho um formulario consulta de cliente por nome, onte tb posso cadastrar novo, através de um botão,neste frm existe uma combo box que filtra o cliente pelo nome. O meu problema é quando não encontrar o cliente na base do BD,apareça uma mensagem informando: Cliente não encontrado na base de dados. deseja cadastrá-lo? sim, não. Se sim libera o frm para editar se não simplesmente fecha a mensagem e continua no mesmo frm vazio, limpando a caixa da combo, onde foi digitado o cliente.
Deu pra entender?
Quando o cliente está cadastrado, tá tdo beleza, ele preenche automaticamente o frm com os dados do cliente.
entretanto qdo o cliente não está cadastrado na base, dá erro.
Este são os códigos e a função que utilizo para esta combo,o problema é que ele está dando erro: GRATA, ABS
Private Sub cbocliente_AfterUpdate()
DoCmd.ApplyFilter , "CodigoCliente = " & Me!cbocliente.Column(0) ' Codigocliente chave primaria, cbocliente, onde vai buscar o nome desejado
Me!cbocliente = Null 'deixa a combo vazia, limpa.
End Sub
Private Sub cbocliente_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
If Confirmar("Deseja adicionar " & NewData & " automaticamente ao cadastro?") Then
If CurrentProject.AllForms("FrmRecepNomeCliente").IsLoaded Then
DoCmd.Close acForm, "FrmRecepNomeCliente", acSavePrompt
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("TblCliente")
rs.AddNew
rs!Nome = NewData
rs.Update
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
Response = acDataErrAdded
Else
Me.cbocliente.Undo
If Not Confirmar("Deseja abrir o cadastro e cadastrar agora?") Then Exit Sub
If CurrentProject.AllForms("FrmRecepNomeCliente").IsLoaded Then
If Confirmar("O formulário já está aberto." & vbCrLf & _
"Deseja alternar para a janela do formulário?") Then
Forms!FrmRecepNomeCliente.SetFocus
Else
DoCmd.OpenForm "FrmRecepNomeCliente"
DoCmd.GoToRecord , "", acNewRec
End If
End If
End Sub
'Faz uma pergunta ao usuário e retorma True se a resposta for SIM, e false se a resposta for NÃO
Public Function Confirmar(sMensagem As String) As Boolean
Dim intResp As Integer
intResp = MsgBox(sMensagem, vbYesNo + vbQuestion, "Confirmação")
If intResp = vbYes Then
Confirmar = True
Else
Confirmar = False
End If
End Function