IMPEDIR DUPLICADO
(montei este exemplo. Mas as duplicidades de nomes esta passando) segue o exemplo.
[ô]Declaração
Dim Cnn As ADODB.Connection
Dim Rst As ADODB.Recordset
Private Sub txtNome_LostFocus()
[ô]Função para não aceitar duplicidade
If Trim(txtNome.Text) = [Ô][Ô] Then Exit Sub
txtNome = MMCase(txtNome.Text)
Dim SQL As String
SQL = [Ô]SELECT IDCodigo FROM tblDados Where Nome = [ô][Ô] & txtNome.Text & [Ô][ô][Ô]
If Rst.RecordCount > 0 Then
If CInt(Rst(0).Value) <> CInt(txtMatricula.Text) Then
MsgBox [Ô]O Nome do Sócio já existe cadastrado no Banco de Dados.[Ô], vbCritical, [Ô]Nome Duplicado[Ô]
txtNome.SetFocus
End If
End If
End Sub
Grata,
Fany
Citação::
Fany, de acordo com seu exemplo, voce não carregou os dados no recordset, então o numero de registros sempre será zero. Neste caso seu teste não funcionará
Cite um exemplo de Recordset???
Homônimo pode existir apesar de ter poucos.
Citação::
A sua consulta e registros de sócios mais segura é pelo CPF.Ninguém tem dois.
Homônimo pode existir apesar de ter poucos.
E como seria esse código por CPF?
Citação:E como seria esse código por CPF?
A resposta é muito simples.
Tão simples que não sei se entendi sua pergunta.
Por uma query SQL verifique se o CPF ou CNPJ já está cadastrado. Pode ser quando perder o foco, quando completar a digitação (tamanho digitado igual a 11 ou 14, para CPF e CNPJ respectivamente) ou quando clicar em algum botão de gravação dos dados.
Citação::
FANYSLZ,
E como seria esse código por CPF?
A resposta é muito simples.
Tão simples que não sei se entendi sua pergunta.
Por uma query SQL verifique se o CPF ou CNPJ já está cadastrado. Pode ser quando perder o foco, quando completar a digitação (tamanho digitado igual a 11 ou 14, para CPF e CNPJ respectivamente) ou quando clicar em algum botão de gravação dos dados.
Já tem a verificação de digitação do CPF
Grata,
Citação::
FANYSLZ,
E como seria esse código por CPF?
A resposta é muito simples.
Tão simples que não sei se entendi sua pergunta.
Por uma query SQL verifique se o CPF ou CNPJ já está cadastrado. Pode ser quando perder o foco, quando completar a digitação (tamanho digitado igual a 11 ou 14, para CPF e CNPJ respectivamente) ou quando clicar em algum botão de gravação dos dados.
só queria um exemplo de IMPEDIR DUPLICADO no textbox.
Para impedir duplicado no textbox, você precisa aguardar pelo usuário digitar, para depois saber se o que ele digitou já existe, correto?
Pois bem. Após a digitação, proceda a verificação no seu banco de dados para saber se o que foi digitado já existe, na forma como te passei acima (por uma query simples).
Se sua pesquisa para verificar duplicidade realmente será pelo nome (desaconselhado) certifique-se de que o nome digitado na textbox não tenha acentuação ou maiúscula/minúscula diferente do que está cadastrado.
Exemplos:
JOAO é diferente de JOÃO (acento)
André é diferente de ANDRé (maiúsculas/minúsculas)
Ademais, neste trecho de código
SQL = [Ô]SELECT IDCodigo FROM tblDados Where Nome = [ô][Ô] & txtNome.Text & [Ô][ô][Ô]
If Rst.RecordCount > 0 Then
Você assimilou a query à variável de nome SQL, mas nunca executou a query e já foi direto verificar o recordcout.
Teria que fazer algo como...
SQL = [Ô]SELECT IDCodigo FROM tblDados Where Nome = [ô][Ô] & txtNome.Text & [Ô][ô][Ô]
set Rst = Cnn.execute(SQL)
If Rst.RecordCount > 0 Then
Também tenha certeza que seu Cnn abriu (Cnn.Open) o banco de dados.
Citação::
FANYSLZ,
Para impedir duplicado no textbox, você precisa aguardar pelo usuário digitar, para depois saber se o que ele digitou já existe, correto?
Pois bem. Após a digitação, proceda a verificação no seu banco de dados para saber se o que foi digitado já existe, na forma como te passei acima (por uma query simples).
Se sua pesquisa para verificar duplicidade realmente será pelo nome (desaconselhado) certifique-se de que o nome digitado na textbox não tenha acentuação ou maiúscula/minúscula diferente do que está cadastrado.
Exemplos:
JOAO é diferente de JOÃO (acento)
André é diferente de ANDRé (maiúsculas/minúsculas)
Ademais, neste trecho de códigoSQL = [Ô]SELECT IDCodigo FROM tblDados Where Nome = [ô][Ô] & txtNome.Text & [Ô][ô][Ô]
If Rst.RecordCount > 0 Then
Você assimilou a query à variável de nome SQL, mas nunca executou a query e já foi direto verificar o recordcout.
Teria que fazer algo como...SQL = [Ô]SELECT IDCodigo FROM tblDados Where Nome = [ô][Ô] & txtNome.Text & [Ô][ô][Ô]
set Rst = Cnn.execute(SQL)
If Rst.RecordCount > 0 Then
Também tenha certeza que seu Cnn abriu (Cnn.Open) o banco de dados.
Euzébio,
Fiz conforme seu exemplo.
Não deu certo...
Quanto à sua busca, tente assim:
RST.open SQL, CNN, ADOPENFORWARDONLY, ADLOCKREADONLY
IF RST.EOF = FALSE THEN
msgbox [Ô]já existe[Ô]
ELSE
msgbox [Ô]não existe[Ô]
END IF
RST.close
tenha certeza que sua busca está exatamente como armazenada