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
- Home
- >
- Fórum
- >
- Windows, Softwa...
- >
- Suítes de escri...
- >
- Como evitar duplicidade d...
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
Fala Basole, como sempre me salvando ...
Cara, apresentou erro ... http://postimg.org/image/ii9ks06gb/
Esse foi um erro grosseiro (ortografico), é so corrigir aii:
[code=VB] Dim banco2 As ADODB.Recordset
[/Code]
ok! Conseguiiii!!!
Muito obrigado Cara!!!!