Bom dia,
Gostaria de uma ajuda no desenvolvimento de uma função que impeça que usuário de salvar/alterar um registro, caso os campos 'Título' e 'Autor' já estejam registrados.
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
[RESOLVIDO] Botão Ok - Restringir salvamento
-
- Colaborador
- Mensagens: 17
- Registrado em: Sex Set 15, 2017 8:29 am
[RESOLVIDO] Botão Ok - Restringir salvamento
Editado pela última vez por SaraOliveira em Sex Out 13, 2017 10:11 am, em um total de 1 vez.
- Rafael Monteiro
- Consultor
- Mensagens: 277
- Registrado em: Seg Nov 28, 2011 8:27 am
- Localização: Sorocaba - SP
- Contato:
Re: Botão Ok - Restringir salvamento
Boa noite Sara Oliveira,
Eu penso ter entendido o que você pretendo. Mas talvez seja mais viável você adicionar o código dentro do optAlterar, já que a intenção é impedir que aja alterações. Então eu pensei nesse código dentro do optAlterar:
Eu penso ter entendido o que você pretendo. Mas talvez seja mais viável você adicionar o código dentro do optAlterar, já que a intenção é impedir que aja alterações. Então eu pensei nesse código dentro do optAlterar:
Código: Selecionar todos
Private Sub optAlterar_Click()
If Cadastro.txtTitulo = "" Then
'Continua sem interrupção
Else
MsgBox "Esse Registro não pode ser alterado!", vbExclamation, "Informação"
btnCancelar_Click
If Cadastro.txtAutor = "" Then
'Continua sem interrupção
Else
MsgBox "Esse Registro não pode ser alterado!", vbExclamation, "Informação"
btnCancelar_Click
lblMensagem.Caption = ""
If txtCodigo.Text <> vbNullString And txtCodigo.Text <> "" Then
Call HabilitaControles
Call DesabilitaBotoesAlteracao
'dá o foco ao primeiro controle de dados
txtTitulo.SetFocus
Else
lblMensagem.Caption = "Não há livro a ser alterado"
End If
End If
End If
End Sub
-
- Colaborador
- Mensagens: 17
- Registrado em: Sex Set 15, 2017 8:29 am
Re: Botão Ok - Restringir salvamento
oi Rafael, boa noite!
Obrigado pela resposta!
Entendi o que você fez, mas meu objetivo é outro.
No meu caso, o objetivo é: quando o usuário realizar o registro de um livro, aparecer uma mensagem avisando que o mesmo já existe. E, se ele for alterar um livro, mas essa alteração ja constar na biblioteca tambem exibir um aviso.
Em resumo: evitar itens duplicados na biblioteca
Obrigado pela resposta!
Entendi o que você fez, mas meu objetivo é outro.
No meu caso, o objetivo é: quando o usuário realizar o registro de um livro, aparecer uma mensagem avisando que o mesmo já existe. E, se ele for alterar um livro, mas essa alteração ja constar na biblioteca tambem exibir um aviso.
Em resumo: evitar itens duplicados na biblioteca
-
- Colaborador
- Mensagens: 17
- Registrado em: Sex Set 15, 2017 8:29 am
Re: Botão Ok - Restringir salvamento
Olá!
Resolvi o problema criando uma função e chamando-a, no botão Ok.
E para aciona-la:
Pode não ser o melhor método, mas atendeu muito bem a minha necessidade!
Resolvi o problema criando uma função e chamando-a, no botão Ok.
Código: Selecionar todos
Private Function DetectarRepetidos()
Dim Titulo, Autor
Dim Rng1, Rng2
Titulo = txtTitulo.Value
Autor = txtAutor.Value
Set Rng1 = Sheets("Livros").Range("B:B").Find(Titulo)
Set Rng2 = Sheets("Livros").Range("C:C").Find(Autor)
If Not Rng1 Is Nothing And Not Rng2 Is Nothing Then
DetectarRepetidos = True
Exit Function
Else
DetectarRepetidos = False
End If
End Function
E para aciona-la:
Código: Selecionar todos
Private Sub btnOK_Click()
Dim proximoId As Long
'Altera
If optAlterar.Value Then
If txtTitulo = "" Or txtAutor = "" Or cbCategoria.Value = "" Then
MsgBox "Os campos 'Título', 'Autor' e 'Categoria' devem ser preenchidos!", 16, "Campos em branco"
Exit Sub
End If
Call DetectarRepetidos
If DetectarRepetidos = True Then
MsgBox "O livro já existe nos registros!", 16, "Duplicados"
LimpaControles
txtTitulo.SetFocus
Exit Sub
Else
Call SalvaRegistro(CLng(txtCodigo.Text), indiceRegistro)
lblMensagem.Caption = ""
lblMensagem.Caption = "Registro alterado com sucesso"
End If
End If
'Novo
If optNovo.Value Then
proximoId = PegaProximoId
'pega a próxima linha
Dim proximoIndice As Long
proximoIndice = wsCadastro.UsedRange.Rows.Count + 1
If txtTitulo = "" Or txtAutor = "" Or cbCategoria.Value = "" Then
MsgBox "Os campos 'Título', 'Autor' e 'Categoria' devem ser preenchidos!", 16, "Campos em branco"
Exit Sub
End If
Call DetectarRepetidos
If DetectarRepetidos = True Then
MsgBox "O livro já existe nos registros!", 16, "Bookworm informa: Duplicados"
LimpaControles
txtTitulo.SetFocus
Exit Sub
Else
Call SalvaRegistro(proximoId, proximoIndice)
txtCodigo = proximoId
lblMensagem.Caption = ""
lblMensagem.Caption = "Registro salvo com sucesso"
End If
End If