GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Ao cadastrar novo nome verificar se RG já existe no BD
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
Ao cadastrar novo nome verificar se RG já existe no BD
 Login/Cadastrar
 
Analista Júnior

Figura de  santista
postado
Pessoal,

Tenho um form de cadastro de novos alunos.

Queria saber como fazer para que ao digitar o RG do aluno no form de cadastro ele verifique se já existe aquele aluno.

Se já existe, envia uma mensagem ou alerta para a existência daquele aluno no cadastro.

grato

p.s. o Rg não tem máscara


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
Programador Sênior

Figura de  Valdecir Lopis
postado Hide Post
Noite!

Tente isso, no evento "antes de atualizar".

quote:

Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
Rst.FindFirst "SeuCampoRG='" & Me.SeuCampoRG & "'"
If Not Rst.NoMatch Then
If MsgBox("RG já cadastrado. Mostrar registro?", vbInformation + vbYesNo, "Duplicado") = vbYes Then
Me.Undo
Me.Bookmark = Rst.Bookmark
End If

Rst.Close
Set Rst = Nothing
End If
 
Postagens: 330 | Localização: Curitiba | Registrado: 21 November 2001Reply With QuoteReport This Post
Analista Júnior

Figura de  santista
postado Hide Post
quote:
Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
Rst.FindFirst "SeuCampoRG='" & Me.SeuCampoRG & "'"
If Not Rst.NoMatch Then
If MsgBox("RG já cadastrado. Mostrar registro?", vbInformation + vbYesNo, "Duplicado") = vbYes Then
Me.Undo
Me.Bookmark = Rst.Bookmark
End If

Rst.Close
Set Rst = Nothing
End If



Olá,

Não funcionou.

Nem colocando no Evento do form nem no evento do próprio campo.
Simpelsmente ele adiciona novo aluno mesmo que o RG já esteja na tabela cadastrado. testei com diversos RGs já cadastrados e repti alguns. Ele aceitou na boa e nem mensagem enviou.

grato


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
Analista Pleno

Figura de  Balemberg
postado Hide Post
Olá Santista
Presumindo que você já tem conhecimentos em VBA aqui vai um código que uso.

Crie uma caixa de texto desacoplada no topo do form. Nome = PesquisaAluno

Nela use os seguintes códigos tanto no evento antes de atualizar e Ao Sair respectivamente
na folha de propriedades:
AntesdeAtualizar =Antes_DeAtualizar()
AoSair =Find_AoSair()
===============================
Private Function Antes_DeAtualizar()

Dim RS As Recordset, C As Control
Dim wsp As Workspace
Set wsp = DBEngine.Workspaces(0)
Set C = Screen.ActiveControl

Set DB = wsp.OpenDatabase("D:\pasta\Arquivo.mdb")
Set RS = DB.OpenRecordset("tblAlunos", dbOpenTable)

On Error Resume Next

With RS
.Index = "RG" 'coloque o campo do RG
.MoveFirst
.Seek "=", C
End With

On Error GoTo 0
If Err <> 0 Then
MsgBox Error(Err), 48
DoCmd.CancelEvent
Exit Function
End If
RS.Close

Found = C

End Function

===============================================
Private Function Find_AoSair()
Dim Codgo As Integer
On Error GoTo Err_Find_AoSair


Me!NewRec = 0
If Not IsNull(Found) Then
If Found <> "" Then
If DCount("*", "tblAlunos", "[RG]= '" & Found & "'") > 0 Then
Me.RecordsetClone.FindFirst "[RG] = '" & Me.[PesquisaAlunos] & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark
Me!PesquisaAlunos = ""
Else
If MsgBox("Aluno não cadastrado.@@ Deseja Cadastrar?", vbQuestion + vbYesNo, "Cadastro") = vbYes Then

DoCmd.GoToRecord , , acNewRec


Me!RG = Me!PesquisaAluno

Me!PesquisaAlunos = ""

End If
End If
Found = ""
End If
End If

Exit_Find_AoSair:
Exit Function

Err_Find_AoSair:
Call InformaErro("FindAoSair")
Resume Exit_Find_AoSair

End Function
================================
Depure o código e acerte-o para o teu caso

Abraços


Balemberg
==========================
Procure ver os posts diretamente no fórum, geralmente eu edito os meus.


 
Postagens: 975 | Localização: Florianópolis-SC | Registrado: 12 March 2001Reply With QuoteReport This Post
Programador Sênior

Figura de  Valdecir Lopis
postado Hide Post
quote:
Rst.FindFirst "SeuCampoRG='" & Me.SeuCampoRG & "'"


Você substituiu os nomes de campos?

Abraço e boa sorte!
 
Postagens: 330 | Localização: Curitiba | Registrado: 21 November 2001Reply With QuoteReport This Post
Analista Júnior

Figura de  santista
postado Hide Post
valdecir,

Substitui os nomes sim. Eles se chamam RG simplesmente.

meu código copiado do seu ficou assim:

Private Sub RG_BeforeUpdate(Cancel As Integer)
Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
Rst.FindFirst "RG='" & Me.RG & "'"
If Not Rst.NoMatch Then
If MsgBox("RG já cadastrado. Mostrar registro?", vbInformation + vbYesNo, "Duplicado") = vbYes Then
Me.Undo
Me.Bookmark = Rst.Bookmark
End If

Rst.Close
Set Rst = Nothing
End If

End Sub

-----

Assim, eu não consigo ver onde errei.


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
Analista Júnior

Figura de  santista
postado Hide Post
Balemberg,

o pior é que não sei VB e não programo.
Depurar código ou complementar , é algo que ainda não sou capaz de fazer.

Grato


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
Programador Pleno

Figura de  SergioDu
postado Hide Post
Boa tarde Santista,

Tente dessa forma:

Entre no modo Design do form e clique com o botão direito do mouse no campo em que voce quer fazer essa verificação, selecione a aba EVENTO, no evento após atualizar que é um dos primeiros da lista clique no pequeno botão a direita da linha com 3 pontinhos.
A janela do VBA vai abrir dentro do metodo:

Private Sub RG_AfterUpdate()

End Sub

Ente as duas linhas digite isso:

If isnull(Dlookup("[RG]","NomeDaTabela","[RG]='" & Me.RG & "'")) Then
Msgbox "Este RG já esta cadastrado, por favor verifique os números digitados e tente novamente.",VbExclamation,"Aviso"
Me.RG = null
End If
 
Postagens: 167 | Localização: SP | Registrado: 15 September 2006Reply With QuoteReport This Post
Coordenador

postado Hide Post
quote:
o pior é que não sei VB e não programo.


Nesse caso por que voce não configura isso direto na tabela? Na propriedade do campo "Indexado" coloque "Sim(Duplicação não autorizada)".

Dessa forma não precisa de código.
 
Postagens: 1913 | Registrado: 02 July 2001Reply With QuoteReport This Post
Analista Júnior

Figura de  santista
postado Hide Post
MAs é que eu tenho um form NOVO CADASTRO e ao digitar os dados e o RG do aluno este aluno pode ser que ja estaja cadastrado e eu não saiba, por isso a verificação do RG.


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
Analista Júnior

Figura de  santista
postado Hide Post
quote:
If isnull(Dlookup("[RG]","NomeDaTabela","[RG]='" & Me.RG & "'")) Then
Msgbox "Este RG já esta cadastrado, por favor verifique os números digitados e tente novamente.",VbExclamation,"Aviso"
Me.RG = null
End If

SergioDu,

Ele continua aceitando o Rg repetido durante o cadastro.
Fiz assim:

Abri o form cadastrar novo aluno
cliquei nas propriedades do campo RG
aba evento
após atualizar
...
digitei o código conforme descreveu.
alterei o nome da tabela para a minha.

ao executar o form ele aceita o RG normalmente.

onde esta o erro?

grato


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
Analista Pleno

Figura de  Balemberg
postado Hide Post
Santista

Pegando uma linha do código que te passei, experimente :

If DCount("*", "tblAlunos", "[RG]= '" & Me!RG & "'") > 0 Then
Msgbox "Este RG já esta cadastrado, por favor verifique os números digitados e tente novamente.",VbExclamation,"Aviso"
DoCmd.CancelEvent
endif

Espero que de certo !!


Balemberg
==========================
Procure ver os posts diretamente no fórum, geralmente eu edito os meus.


 
Postagens: 975 | Localização: Florianópolis-SC | Registrado: 12 March 2001Reply With QuoteReport This Post
Programador Pleno

Figura de  SergioDu
postado Hide Post
Santista, desculpe a falta de atenção, use:

If Not IsNull

Acrescente o Not

Abraço.
 
Postagens: 167 | Localização: SP | Registrado: 15 September 2006Reply With QuoteReport This Post
Programador Sênior

Figura de  Valdecir Lopis
postado Hide Post
Testei e funcionou, porém o campo deve estar formatado para texto na tabela.
 
Postagens: 330 | Localização: Curitiba | Registrado: 21 November 2001Reply With QuoteReport This Post
Analista Júnior

Figura de  santista
postado Hide Post
Ok

os códigos passados funcionaram. Obrigado a todos.


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
Analista Júnior

Figura de  santista
postado Hide Post
Agradeço todas as respostas pois funcionaram muito bem.
Obrigado a todos.


Tack så mycket.
 
Postagens: 546 | Registrado: 18 February 2011Reply With QuoteReport This Post
  Powered by Social Strata  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Ao cadastrar novo nome verificar se RG já existe no BD

©