Ir para conteúdo
Fórum Script Brasil
  • 0

Duplicação De Usuários


Bruno Pola

Pergunta

Então, tenho que fazer um sisteminha que tem login de usuários.

Só que não consigo fazer um controle certinho sobre os usuários cadastrados.

Fiz um recordset mas não deu muito certo não:

var= "Nome='" * nome.Text * "'"
DtUser.Recordset.FindFirst var

If aoa = 1 Then
MsgBox "Usuário já existente", vbInformation, "Aviso"
Else;[/codebox]

mas não funciona..

alguém pode me ajudar a clarear as idéias??

vlww

ele dá um erro de Type Mismatch, mas mesmo assim salva os dados na tabela...

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

Aqui está errado...

var= "Nome='" * nome.Text * "'"
... os astericos devem estar dentro da string:
var= "Nome='*" & nome.Text & "*'"

Só que você vai ter problemas procurando assim o nome do usuário. Você, por exemplo, não vai poder ter uma usuária chamada Mariana e outra chamada Ana. Isso porque "Ana" está dentro de "Mariana", e vai acusar que o usuário já existe. Sugiro a você retirar os astericos para procurar o nome exato.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Vish, deu certo..

Mas mesmo assim tá salvando...

E agora apareceu o erro que tá faltando o addnew pra salvar os dados..

Mas o addnew tá noutro botão...

O botão que salva é esse:


If Sim.Value = True Then
DtUser.Recordset("Administrador") = "S"
ElseIf não.Value = True Then
DtUser.Recordset("Administrador") = "N"
End If

Var = "Nome='" & nome.Text & "'"
DtUser.Recordset.FindFirst (Var)
If Var <> 0 Then
MsgBox "Usuário já existente", vbInformation, "Aviso"
DtUser.Recordset.CancelUpdate
End If


DtUser.Recordset.Update
[/codebox]

alguém pode ajudar?

Vlww

Link para o comentário
Compartilhar em outros sites

  • 0

Tem um problema sério no seu código. Você está usando o mesmo DataControl para adicionar e para fazer a pesquisa (ao mesmo tempo). Provavelmente você está chamando o AddNew (que posiciona o cursor em um novo registro, em branco). Daí, naquele seu código você faz um FindFirst (que posiciona o seu cursor no registro encontrado ou em EOF caso não encontre). Ao fazer isso você está finalizando o seu AddNew. O ideal no caso seria fazer a pesquisa antes de chamar o AddNew, porque você não pode mexer no cursor da tabela enquanto está adicionando um registro.

Sacou? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Putz.. nem tinha pensado nisso....

É por isso o erro então...

Só uma coisa que eu não entendi...

Mas se ele finaliza, porque ele salva na tabela os dados que eu digitei?

E como eu vou fazer essa pesquisa antes do AddNew(mas isso eu vou pensar!!!)

E valeu cara!!

Me ajudou bst!!

Link para o comentário
Compartilhar em outros sites

  • 0

Bruno,

isto esta acontecendo devido voce não colocar um exit sub abaixo da linha;

dtuser.recordset.cancelupdate

veja como ficaria o seu codigo

Var = "Nome='" & nome.Text & "'"

DtUser.Recordset.FindFirst (Var)

If Var <> 0 Then

MsgBox "Usuário já existente", vbInformation, "Aviso"

DtUser.Recordset.CancelUpdate

exit sub

End If

DtUser.Recordset.Update

pois se voce não colocar o exit sub o sistema vai continuar executando a rotina e tambem ira executar a linha

DtUser.Recordset.Update

Espero ter te ajudado em alguma coisa

fui!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Hmm

Isso também já tentei..

Mas tipo.. Assim ele vai cancelar tudo, até o registro criado.

Eu queria que avisasse que existe o usuário e voltasse pro text para quem estiver cadastrando poder alterar, não começar tudo denovo entendeu?

Mas de inicio, eu pensei em deixar assim, pois são poucos campos.

Só que mais pra frente, vai ser uma ficha completa dos usuários!

Aí complica se cancelar tudo né?

Mas valeu mesmo assim!!

Tem um problema sério no seu código. Você está usando o mesmo DataControl para adicionar e para fazer a pesquisa (ao mesmo tempo). Provavelmente você está chamando o AddNew (que posiciona o cursor em um novo registro, em branco). Daí, naquele seu código você faz um FindFirst (que posiciona o seu cursor no registro encontrado ou em EOF caso não encontre). Ao fazer isso você está finalizando o seu AddNew. O ideal no caso seria fazer a pesquisa antes de chamar o AddNew, porque você não pode mexer no cursor da tabela enquanto está adicionando um registro.

Sacou? ;)

Graymalkin

Tem como eu fazer uma pesquisa com outro data?

Ou melhor, tem como me dar um toque, sobre como fazer assim?

porque não saiu nada aqui

xheheh

Link para o comentário
Compartilhar em outros sites

  • 0

Olha.. eunão entendi muito bem o que ue você quis dizer...

Mas com o exitsub lá..

ele pára de funcionar tudo...

até quando eu clico no cancelar, ele avisa que não existe nenhum addnew ou edit...

e se eu troco o nome que eu digitei, ele me avisa falando que existe esse registro e altera o ultimo da tabela...

Exemplo

tenho um registro Bruno

tento adicionar outro Bruno, ele me avisa que já existe e pára.

ai eu digito zé(que não existe), ele me avisa que já tem o zé e altera o Bruno que eu tinha para zé, só que o programa não sai dai. Se eu tento fazer alguma coisa, ele fala que eu não tenho nenhum addnew ou edit em evidencia.....

vai entender essas coisas!

aeiueahieauheiauheaiua

vlwww!

Editado por Bruno Pola
Link para o comentário
Compartilhar em outros sites

  • 0

Eu *acho* que você pode fazer o seguinte:

rs = DtUser.Database.OpenRecordset("SELECT * FROM tabela WHERE Nome='" & nome.Text & "'")

If Not (rs.EOF And rs.BOF) Then
    MsgBox "Usuário já existente", vbInformation, "Aviso"
    DtUser.Recordset.CancelUpdate
Else
    DtUser.Recordset.Update
End If

Veja aí se funciona. Tem muito tempo que não uso DAO e o código acima eu não testei.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Ele dá um erro no If Not...

Sinceramente não sei o que acontece..

Se eu troco o If Not pelo If só:

If rs.EOF <> 0 And rs.BOF <> 0 then

ou somente:

If rs<>0 then

Ele dá a mensagem:

"Erro de Automatização"

Nunca vi essas coisas aieuhiaeuheiu

Mas valeeu!

post-27395-1175173295_thumb.jpg

Editado por Bruno Pola
Link para o comentário
Compartilhar em outros sites

  • 0

Bom faz tempo que eu não uso DAO tambem mas acho que o codigo tem que ser assim:

rs = DtUser.Database.OpenRecordset("SELECT * FROM tabela WHERE Nome='" & nome.Text & "'")

If rs.EOF = false And rs.BOF= false Then
MsgBox "Usuário já existente", vbInformation, "Aviso"
DtUser.Recordset.CancelUpdate
Else
DtUser.Recordset.Update
End If[/codebox]

faz alguns teste ai!!!!!!

t+

FUI!!!!!!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Experimente então fazer:

rs = DtUser.Database.OpenRecordset("SELECT * FROM tabela WHERE Nome='" & nome.Text & "'")

If Not rs.EOF Then
    MsgBox "Usuário já existente", vbInformation, "Aviso"
    DtUser.Recordset.CancelUpdate
Else
    DtUser.Recordset.Update
End If

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Nada ainda, os mesmos erros..

Será que não tem nenhuma propriedade, ou função que eu tenha que atribuir no meu Data?

Se bem que eu já fucei em tudo que é possivel, alterei até o que não sabia e nada!!

Mas, talvez eu não tenha mudado alguma coisa que falta....

Vlww!!

Link para o comentário
Compartilhar em outros sites

  • 0
Qual o erro que dá? Em qual linha? E qual o código que você está usando?

Abraços,

Graymalkin

Vish véio.. eu dei print, só que não tá aparecendo para eu postar a imagem aqui.

Mas dá um erro que o objeto não suporta essa propriedade ou metodo..

na linha do If rs.eof then

E não entendi esse negócio do codigo..

hehehe...

vlww

Link para o comentário
Compartilhar em outros sites

  • 0
rs = DtUser.Database.OpenRecordset("SELECT * FROM Tb_Usuario WHERE Nome='" & Nome.Text & "'")
MsgBox Nome
If rs.EOF Then
    MsgBox "Usuário já existente", vbInformation, "Aviso"
    DtUser.Recordset.CancelUpdate
Else

If Sim.Value = True Then
    DtUser.Recordset("Administrador") = "S"
 ElseIf não.Value = True Then
    DtUser.Recordset("Administrador") = "N"
End If
  DtUser.Recordset.Update
habilitabotoes
End If
End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...