IMPEDIR DUPLICADO

FANYSLZ 08/01/2017 00:23:47
#470456
Oi pessoal, como faço para impedir nome duplicado no textbox?

(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
DAMASCENO.CESAR 08/01/2017 01:53:03
#470457
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á


FANYSLZ 08/01/2017 03:58:23
#470458
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???
OMAR2011 08/01/2017 08:15:28
#470459
A sua consulta e registros de sócios mais segura é pelo CPF.Ninguém tem dois.
Homônimo pode existir apesar de ter poucos.
FANYSLZ 08/01/2017 10:50:03
#470461
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?
SINCLAIR 08/01/2017 12:25:39
#470465
FANYSLZ,

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.

FANYSLZ 08/01/2017 13:00:09
#470466
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,
FANYSLZ 08/01/2017 13:02:13
#470467
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.
SINCLAIR 08/01/2017 13:08:55
#470468
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ó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.



FANYSLZ 08/01/2017 22:15:13
#470480
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ó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.





Euzébio,

Fiz conforme seu exemplo.
Não deu certo...
POCE1DON 08/01/2017 23:40:02
#470481
Olha Fany, se está iniciando seu projeto agora, talvez seja interessante vc manter um padrão de digitação, como texto nos textbox apenas em maiúsculo, não permitir acentuações e (ç), números de cpf/cnpj sem [Ô]-[Ô] ou [Ô]/[Ô], assim, essa formatação vc faz quando exibir os dados ao usuário, e suas buscas ficam mais exatas.

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
Página 1 de 3 [30 registro(s)]
Tópico encerrado , respostas não são mais permitidas