COMO EVITAR REGISTROS DUPLICADOS
Então pessoal, lá vai.
Minha conexão:
Dim str As String
Set adoconn = Nothing
adoconn.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=cadastrodeclientes.mdb;Persist Security Info=False[Ô]
str = [Ô]select * from clientes order by nome[Ô]
rs.Open str, adoconn, adOpenDynamic, adLockPessimistic
rs.MoveFirst
Copiei o código do tópico mencionado e ficou assim:
Public Sub Verifica()
Dim Verifica As String
Dim sql As String
sql = [Ô]Select * From clientes Where Nome =[ô][Ô] & cnpjmask.Text & [Ô][ô][Ô]
rs.Open sql, adoconn, adOpenDynamic, adLockOptimistic
Do While Not rs.EOF
Verifica = rs(4)
rs.MoveNext
Loop
If Verifica <> [Ô][Ô] Then
MsgBox [Ô]Já existe esse CNPJ cadastrado [Ô], vbExclamation, [Ô]SPY[Ô]
Exit Sub
End If
rs.Close
End Sub
Private Sub cnpjmask_LostFocus()
Dim sql As String
If rs.State = 1 Then rs.Close
sql = [Ô]Select Nome From Clientes Where Nome =[ô][Ô] & cnpjmask.Text & [Ô][ô][Ô]
rs.Open sql, adoconn, adOpenKeyset, adLockPessimistic
If rs.RecordCount > 0 Then
MsgBox [Ô]Já existe esse CNPJ Cadastrado [Ô], vbExclamation, [Ô]SPY[Ô]
cnpjmask.Text = [Ô][Ô]
cnpjmask.SetFocus
End If
rs.Close
End Sub
Os erros que aparecem são os seguintes:
Quando coloco um cnpj existente ele aparece o erro 3219 operação não permitida neste contexto e me mostra a linha e comando.
If rs.State = 1 Then [txt-color=#e80000]rs.Close[/txt-color]
Se eu coloco Verifica antes do lostfocus ele aparece o seguinte, erro 3705 operação não permitida quando o objeto está aberto. E me mostra a linha
rs.Open sql, adoconn, adOpenDynamic, adLockOptimistic
Se precisarem de mais alguns dados eu passo aqui, ok?
Obrigado pela ajuda.
Minha conexão:
Dim str As String
Set adoconn = Nothing
adoconn.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=cadastrodeclientes.mdb;Persist Security Info=False[Ô]
str = [Ô]select * from clientes order by nome[Ô]
rs.Open str, adoconn, adOpenDynamic, adLockPessimistic
rs.MoveFirst
Copiei o código do tópico mencionado e ficou assim:
Public Sub Verifica()
Dim Verifica As String
Dim sql As String
sql = [Ô]Select * From clientes Where Nome =[ô][Ô] & cnpjmask.Text & [Ô][ô][Ô]
rs.Open sql, adoconn, adOpenDynamic, adLockOptimistic
Do While Not rs.EOF
Verifica = rs(4)
rs.MoveNext
Loop
If Verifica <> [Ô][Ô] Then
MsgBox [Ô]Já existe esse CNPJ cadastrado [Ô], vbExclamation, [Ô]SPY[Ô]
Exit Sub
End If
rs.Close
End Sub
Private Sub cnpjmask_LostFocus()
Dim sql As String
If rs.State = 1 Then rs.Close
sql = [Ô]Select Nome From Clientes Where Nome =[ô][Ô] & cnpjmask.Text & [Ô][ô][Ô]
rs.Open sql, adoconn, adOpenKeyset, adLockPessimistic
If rs.RecordCount > 0 Then
MsgBox [Ô]Já existe esse CNPJ Cadastrado [Ô], vbExclamation, [Ô]SPY[Ô]
cnpjmask.Text = [Ô][Ô]
cnpjmask.SetFocus
End If
rs.Close
End Sub
Os erros que aparecem são os seguintes:
Quando coloco um cnpj existente ele aparece o erro 3219 operação não permitida neste contexto e me mostra a linha e comando.
If rs.State = 1 Then [txt-color=#e80000]rs.Close[/txt-color]
Se eu coloco Verifica antes do lostfocus ele aparece o seguinte, erro 3705 operação não permitida quando o objeto está aberto. E me mostra a linha
rs.Open sql, adoconn, adOpenDynamic, adLockOptimistic
Se precisarem de mais alguns dados eu passo aqui, ok?
Obrigado pela ajuda.
Acho que é pq vc não esta fechando a sua conexão.
Olá amigo!
Você está comparando nome com cnpjmask...
Meio estranho !?!?!?!?!?!?!?!?
Você está comparando nome com cnpjmask...
Meio estranho !?!?!?!?!?!?!?!?
Private Sub cnpjmask_LostFocus()
Dim sql As String
If rs.State = 1 Then rs.Close
sql = [Ô]Select Nome From Clientes Where [txt-color=#e80000]Nome[/txt-color] =[ô][Ô] & [txt-color=#e80000]cnpjmask.Text[/txt-color] & [Ô][ô][Ô]
rs.Open sql, adoconn, adOpenKeyset, adLockPessimistic
If rs.RecordCount > 0 Then
MsgBox [Ô]Já existe esse CNPJ Cadastrado [Ô], vbExclamation, [Ô]SPY[Ô]
cnpjmask.Text = [Ô][Ô]
cnpjmask.SetFocus
End If
rs.Close
End Sub
Opa.
Eu tinha esquecido de modificar isso, rsrs. Mas mesmo depois de modificado não mudaram os erros
Obrigado
Eu tinha esquecido de modificar isso, rsrs. Mas mesmo depois de modificado não mudaram os erros
Obrigado
Quando click no seu butão Novo, limpa o registro e prepara o Rs para edição com:
Se o Rs está aguardando um Rs.Update ou Rs.CancelUpdate não podemos usar-lo para a pesquisar no banco. Então vamos usar um outro Rs para fazer o trabalho.
Então Ficou assim:
Citação:Rs.AddNew
Se o Rs está aguardando um Rs.Update ou Rs.CancelUpdate não podemos usar-lo para a pesquisar no banco. Então vamos usar um outro Rs para fazer o trabalho.
Então Ficou assim:
Public Function RegExiste() As Boolean
Dim Rsv As New ADODB.Recordset
Dim Sql As String
RegExiste = False
Sql = [Ô]Select nome From clientes Where CNPJ =[ô][Ô] & cnpjmask.Text
Sql = Sql & [Ô][ô] or CPF =[ô][Ô] & cnpjmask.Text & [Ô][ô][Ô]
Rsv.CursorLocation = adUseClient
Rsv.Open Sql, adoconn, adOpenKeyset, adLockPessimistic
If Rsv.RecordCount > 0 Then RegExiste = True
Rsv.Close
Set Rsv = Nothing
End Function
Tópico encerrado , respostas não são mais permitidas