GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Emitir aviso assim que digitar campo duplicado
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
5-star Rating (1 Vote) Vote!  Login/Cadastrar 
Estagiário

Figura de  Israel Chaves
postado
Tenho um formulário com 15 campos, sendo que o primeiro campo está definido com 'Duplicação Não autorizada", como fazer pro access emitir aviso assim que um registro repetido é digitado?
ou é possível somente após digitar todos os campos?
Grato,
Israel Chaves
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
Sei que já respondi isso antes, mas não estou a fim de procurar, então:

Private Sub Nome_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_Nome_BeforeUpdate

    If IsNull(DLookup("NroCH", "tblAlunos", "([Nome] = '" & Forms![frmAlunos]![Nome] & "')")) Then
        GoTo Exit_Nome_BeforeUpdate
    End If
    If MsgBox("O Aluno " & UCase(Me!Nome) & " já existe. Deseja alterar?", vbExclamation + vbYesNo, "Já existe...") = vbNo Then
        DoCmd.RunCommand acCmdUndo
        Me!Nome.SetFocus
        Cancel = True
        GoTo Exit_Nome_BeforeUpdate
    End If
    strCodigo = Me!Nome
    Set RS = Me.RecordsetClone
    RS.FindFirst "Nome = '" & UCase(Nome) & "'"
    Me.Undo
    Me.Bookmark = RS.Bookmark
    Set RS = Nothing
Exit_Nome_BeforeUpdate:
    Exit Sub
Err_Nome_BeforeUpdate:
    NE = GravaErro(Err.Number, Err.Description, Me.Name, "Nome_BeforeUpdate")
    GoTo Exit_Nome_BeforeUpdate
End Sub


========================================================
Feliz Não esqueça de dizer se funcionou... Piscando

Na sala da Gerência:
- Chefe, terminei o sistema!
- Bom... Tá bonito... Mas quem é esse tal de Dev Hashish???
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

Figura de  Israel Chaves
postado Hide Post
Osmar,
colei o código no formulário e alterei os nomes dos campos, mas continua passando direto...
acho que fiz algo errado!!!
Confuso

Israel
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
Pergunta cretina: você colocou como procedimento de evento, no Antes de atualizar, do seu campo????

========================================================
Feliz Não esqueça de dizer se funcionou... Piscando

Copiei, colei, e a %$#$ não funciona. Acho que a *&*%# do código está errado.
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

Figura de  Israel Chaves
postado Hide Post
Bravo Puxa, eu tinha colocado o código no lugar errado...(estou aprendendo...hehehe)
Alterei o código no procedimento de evento do campo, mas ainda tá dando erro: "ERRO DE COMPILAÇÃO, VARIÁVEL Ñ DEFINIDA". Segue o código do campo COD_PRONTUARIO abaixo:


Private Sub COD_PRONTUARIO_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_Nome_BeforeUpdate

If IsNull(DLookup("NroCH", "PACIENTES", "([COD_PACIENTE] = '" & Forms![CAD_PACIENTE]![COD_PRONTUARIO] & "')")) Then
GoTo Exit_COD_PRONTUARIO_BeforeUpdate
End If
If MsgBox("O Prontuário " & UCase(Me!Nome) & " já existe. Deseja alterar?", vbExclamation + vbYesNo, "Já existe...") = vbNo Then
DoCmd.RunCommand acCmdUndo
Me!COD_PRONTUARIO.SetFocus
Cancel = True
GoTo Exit_COD_PRONTUARIO_BeforeUpdate
End If
strCodigo = Me!COD_PRONTUARIO
Set RS = Me.RecordsetClone
RS.FindFirst "COD_PRONTUARIO = '" & UCase(COD_PRONTUARIO) & "'"
Me.Undo
Me.Bookmark = RS.Bookmark
Set RS = Nothing
Exit_Nome_BeforeUpdate:
Exit Sub
Err_Nome_BeforeUpdate:
NE = GravaErro(Err.Number, Err.Description, Me.Name, "COD_PRONTARIO_BeforeUpdate")
GoTo Exit_Nome_BeforeUpdate
End Sub


OBS: nome da tabela: PACIENTE
Nome do campo: COD_PRONTUARIO
Nome do Form: TESTE

Desde já, obrigado!
Israel
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
O mais importante você não disse: COD_PRONTUARIO é numérico ou texto? Se é numerico, tire as "'"'"...

Ah!! Não tenho definidos, no código que passei:

Dim RS As DAO.Recordset

poque tenho algumas variáveis, usadas o tempo todo e em todo o sistema, em um módulo padrão...



========================================================
Feliz Não esqueça de dizer se funcionou... Piscando

Copiei, colei, e a %$#$ não funciona. Acho que a *&*%# do código que o £$@*# me passou está errado.
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

Figura de  Israel Chaves
postado Hide Post
Colega Osmar, me desculpe pela burrice Grande Sorriso
o campo COD_PRONTUARIO é NUMÉRICO.
Tenho que tirar " em todos campos COD_PRONTUARIO do código do evento?
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
"([COD_PACIENTE] = " & Forms![CAD_PACIENTE]![COD_PRONTUARIO] & ")"))

" & COD_PRONTUARIO

========================================================
Feliz Não esqueça de dizer se funcionou... Piscando

Copiei, colei, e a %$#$ não funciona. Acho que a *&*%# do código que o £$@*# me passou está errado.
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

Figura de  Israel Chaves
postado Hide Post
É meu amigo, continuo apanhando... Triste
fiz todas alterações, ainda continua danto "erro de compilação"
obs: a primeira linha fica marcada de amarelo e o cursor piscando na linha:
strCodigo = Me!COD_PRONTUARIO


segue o código:
Private Sub COD_PRONTUARIO_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_Nome_BeforeUpdate

If IsNull(DLookup("NroCH", "PACIENTES", "([COD_PACIENTE] = " & Forms![TESTE]![COD_PRONTUARIO] & ")")) Then
GoTo Exit_COD_PRONTUARIO_BeforeUpdate
End If
If MsgBox("O Prontuário " & UCase(Me!Nome) & " já existe. Deseja alterar?", vbExclamation + vbYesNo, "Já existe...") = vbNo Then
DoCmd.RunCommand acCmdUndo
Me!COD_PRONTUARIO.SetFocus
Cancel = True
GoTo Exit_COD_PRONTUARIO_BeforeUpdate
End If
Dim RS As DAO.Recordset
strCodigo = Me!COD_PRONTUARIO
Set RS = Me.RecordsetClone
RS.FindFirst "COD_PRONTUARIO = " & UCase(COD_PRONTUARIO) & ""
Me.Undo
Me.Bookmark = RS.Bookmark
Set RS = Nothing
Exit_Nome_BeforeUpdate:
Exit Sub
Err_Nome_BeforeUpdate:
NE = GravaErro(Err.Number, Err.Description, Me.Name, "COD_PRONTARIO_BeforeUpdate")
GoTo Exit_Nome_BeforeUpdate
End Sub
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
Elimine (ou comente) a linha. strCódigo é outra daquelas variáveis usadas para padronizar, podendo ser "construída"-> strCodigo = Me!Sobrenome & Me!Nome, por exemplo.

========================================================
Feliz Não esqueça de dizer se funcionou... Piscando

Copiei, colei, e a %$#$ não funciona. Acho que a *&*%# do código que o £$@*# me passou está errado.
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

Figura de  Israel Chaves
postado Hide Post
Deu erro na linha:
NE = GravaErro(Err.Number, Err.Description, Me.Name, "COD_PRONTARIO_BeforeUpdate")
aí eu deletei-a e também outras que deram o mesmo erro:
Agora passa direto. (acho que deletei além da conta)

Mas pode deixar Osmar, tô te dando muito trabalho.
Obrigado pela atenção.
Israel
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

Figura de  SBSP
postado Hide Post
Olá pessoal!

já que a coisa tá enrolada, não dá pra começar + simples?

se é pra avisar que o valor digitado já existe na tabela , não dá pra se contentar so verificando isto? Tipo

Private Sub COD_PRONTUARIO_BeforeUpdate(Cancel As Integer)

DIM RS as Recordset

Set RS = Me.RecordsetClone

'campo da tabela=COD_PRONTUARIO,, numerico;
'nome da textbox=COD_PRONTUARIO tambem ?!

RS.FindFirst "COD_PRONTUARIO = " & COD_PRONTUARIO

If NOT RS.NOMATCH Then

MsgBox "O Prontuário já existe. Não dá para incluir de novo"

Cancel = True

End if

Set RS = Nothing

End Sub

Daí, se funcionar e for necessártio, tentar coim calma implementar a possibilidade de abandonar a inclusão e ir atras deste codigo q já existe!

Boa tarde/fim de semana pra toda galera

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Who lives with the barnacles under his knees?
Sponge Bob Square Pants!
Acerbic and shallow and scorning is he,
Sponge Bob Square Pants!
If nautical nonsense is something you wish,
Sponge Bob Square Pants!
Then drop on the deck and flop like a fish,
Sponge Bob Square Pants!
 
Postagens: 147 | Registrado: 17 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

Figura de  Israel Chaves
postado Hide Post
Piscando Piscando Piscando Piscando Piscando Piscando Piscando Piscando Piscando
BINGO!!!!!!!!!!!!!!!!!!

Agora funfou legal. É justamente o que eu precisava.
Muito obrigado SBSP, e também a todos do fórum.

OBS: Este é o melhor Fórum que já participei Grande Sorriso

Israel
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

Figura de  SBSP
postado Hide Post
Funfou? Legal!

hehehehehehehe!

Bob
---------------------------------------
who live's in a pinapple under the sea?
 
Postagens: 147 | Registrado: 17 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Estagiário

Figura de  Israel Chaves
postado Hide Post
Valeu!!
pelo jeito ainda vou te da muita dor de cabeça..hehehe

Grande Sorriso
 
Postagens: 36 | Localização: Lagoa da Prata/MG | Registrado: 16 October 2003Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
Olá, Israel.

Eu simplesmente copiei e colei (HIHIHIHI) uma rotina que está pronta no primeiro aplicativo/form que elmbrei. Por isso foram tantas variáveis não citadas no código. Elas são padrão por todo o aplicativo e, como já disse, estão em um módulo padrão. O NE é a mesma coisa: tenho uma rotina para tratamento de erro centralizada que, após gravar um log do erro e "otras cositas mas", devolve o código do erro e, com ele no NE, vejo o que quero fazer...

Queime alguns neurônios para entender o que a rotina acima faz (e como) que ela pode te dar muitas alegrias mais adiante.

Boa sorte.

========================================================
Feliz Não esqueça de dizer se funcionou... Piscando

Copiei, colei, e a %$#$ não funciona. Acho que a *&*%# do código que o £$@*# me passou está errado.
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Pleno

Figura de  Jeser
postado Hide Post
Grande Osmar! Salve Salve!
Usei o código que vc disponibilizou para esse caso.
Como vc disse que suas variáveis estão num módulo global,
Fiz o seguinte: adicionei a linha

Dim RS As DAO.Recordset
Dim strCodigo As String

Está certo?

Mas quanto a Função "GravaErro" eu não sei como fazer, pode me dar uma ajuda?

Eu comentei esta linha e o código funcionou mesmo assim. Gostaria que falasse pra gente como funciona e pra que serve a função "GravaErro", por favor.

Um grande abraço e sucesso!

Jeser

"Todas as coisas contribuem para o bem daqueles que amam a Deus!"
 
Postagens: 262 | Localização: Rio de Janeiro | Registrado: 31 October 2005Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
É uma rotina genérica de tratamento de erro que grava em um log todos os erros que ocorrrem durante a utilização do aplicativo. Este arquivo serve de apoio para manutenção (fica bem mais fácil que o papo "Deu um erro num formulário, não lembro qual...").


========================================================
A culpa é minha e eu ponho ela em quem eu quiser! (Homer J Simpson)
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
 Tópico Anterior | Próximo Tópico Powered by Eve For Enterprise  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Emitir aviso assim que digitar campo duplicado

©