Logo Hardware.com.br
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas

[Resolvido] Como evitar duplicidade de cadastro (access/Excel)

#1 Por BrunoEvans 05/04/2016 - 17:14
E ai galera, blz?
Seguinte, preciso de um "contador" de dados, esse contador deve ter uma condição "if", dizendo que: Se for igual ou maior que 1, deve parar o cadastro e informar em uma msgbox que ja existe um registro com este ID (tIDACAO). E caso o contador seja ZERO, seguir o cadastro normalmente.

Alguem sabe me ajudar? ja tentei o DCount, mas não funcionou.
Os campos que quero usar são:
Tabela: PLANO
Campo tab: IDACAO
Textbox: tIDACAO


Uso Forms em VBA com banco Access. abaixo o codigo de cadastro da sql.

Private Sub cmdNOVO_Click()
'-----------------------------------------------------------------------------------------------
' CRIA UM NOVO CADASTRO
'-----------------------------------------------------------------------------------------------

Dim nConectar As New ClasseConexao
Dim banco As ADODB.Recordset
Dim sql As String
Set banco = New ADODB.Recordset

sql = " INSERT INTO PLANO( IDACAO, dOportunidade, dAcao, dObjetivo, dResultado )"
sql = sql & " VALUES ( "
sql = sql & " '" & Me.tIDACAO.Text & "', "
sql = sql & " '" & Me.tOportunidade.Text & "', "
sql = sql & " '" & Me.tAcao.Text & "', "
sql = sql & " '" & Me.tObjetivo.Text & "', "
sql = sql & " '" & Me.tResultado.Text & "' ) "
'CONECTAR AO BANCO DE DADOS
nConectar.Conectar
'EXECUTAR A SQL
On Error Resume Next
banco.Open sql, nConectar.Conn

'CONFIRMAÇÃO DE REGISTRO
MsgBox "Plano de Ação: " & Me.tIDACAO.Text & " Cadastrado.", vbInformation, "CADASTRO"
'DESCONECTAR PARA LIBERAR MEMÓRIA
nConectar.Desconectar
Me.tIDACAO = Empty
Me.tOportunidade = Empty
Me.tAcao = Empty
Me.tObjetivo = Empty
Me.tResultado = Empty
Me.tIDACAO.SetFocus ' FOCO NA TEXTBOX NOME

End Sub
Responder
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#2 Por Basole
05/04/2016 - 17:46
Use o msm comando de pesquisa -> where para procurar um registro:
Se a pesquisa retornar algum registro aparece a msg. e para macro, caso contrario segue o cadastro.

[code=VB]
Private Sub cmdNOVO_Click()
'-----------------------------------------------------------------------------------------------
' CRIA UM NOVO CADASTRO
'-----------------------------------------------------------------------------------------------

Dim nConectar As New ClasseConexao
Dim banco As ADODB.Recordset, banco2 As ADODB.recordeset
Dim sql As String, sql2 As String

Set banco = New ADODB.Recordset
Set banco = New ADODB.Recordset

sql2 = "SELECT * FROM [PLANO] WHERE [IDACAO] = '" & tIDACAO.Text & "';"


sql = " INSERT INTO PLANO( IDACAO, dOportunidade, dAcao, dObjetivo, dResultado )"
sql = sql & " VALUES ( "
sql = sql & " '" & Me.tIDACAO.Text & "', "
sql = sql & " '" & Me.tOportunidade.Text & "', "
sql = sql & " '" & Me.tAcao.Text & "', "
sql = sql & " '" & Me.tObjetivo.Text & "', "
sql = sql & " '" & Me.tResultado.Text & "' ) "

'CONECTAR AO BANCO DE DADOS
nConectar.Conectar

'EXECUTAR A SQL

On Error Resume Next
banco2.Open sql2, nConectar.Conn ' ABRE O BANCO 2

' ******** Verififica se o banco2 tem registro ************************
If banco2.RecordCount > 1 Then MsgBox "Já existe o Registro com este ID " & tIDACAO.Text, 64, "Atencao": Exit Sub

banco.Open sql, nConectar.Conn

'CONFIRMAÇÃO DE REGISTRO
MsgBox "Plano de Ação: " & Me.tIDACAO.Text & " Cadastrado.", vbInformation, "CADASTRO"
'DESCONECTAR PARA LIBERAR MEMÓRIA
nConectar.Desconectar
Me.tIDACAO = Empty
Me.tOportunidade = Empty
Me.tAcao = Empty
Me.tObjetivo = Empty
Me.tResultado = Empty
Me.tIDACAO.SetFocus ' FOCO NA TEXTBOX NOME

banco.Close
banco2close

[/code]
End Sub
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal