SENHA
Senha tipo bancaria.
Pessoal, tenho em um form 05 Labels onde carrego numeros aleatórios conforme segue:
(3-1) (7-9) (6-8) (2-0) (4-5)
Esses números são gerados com o código abaixo:
Agora tenho um banco access com uma tabela DADOS com os campos:
ID
Senha
No campo ID tenho gravado João
no campo Senha tenho gravado 32765
No form tenho dois Text um onde digito o nome o outro vou carregando o numero digitado. O problema é ao dar o click nos respectivos Labels para formar a senha numerica. Como faço essa comparação do nome com o numero digitado?
Pessoal, tenho em um form 05 Labels onde carrego numeros aleatórios conforme segue:
(3-1) (7-9) (6-8) (2-0) (4-5)
Esses números são gerados com o código abaixo:
Sub Sorteio()
'Sortear os números
Dim Aa, Sorteio1 As Integer
Dim Res(10)
ReDim Valores1(1)
Valores1(1) = Int((10 * Rnd))
Randomize
For Aa = 1 To 10
Do
Sorteio1 = Int(10 * (Rnd))
If Not JáFoiSorteadoEsteNumero(Sorteio1) Then Exit Do
Loop
Res(Aa) = Sorteio1
Next
Lb1 = Res(1) & "-" & Res(2)
Lb2 = Res(3) & "-" & Res(4)
Lb3 = Res(5) & "-" & Res(6)
Lb4 = Res(7) & "-" & Res(8)
Lb5 = Res(9) & "-" & Res(10)
Erase Valores1
DoEvents
End Sub
Function JáFoiSorteadoEsteNumero(Nn As Integer) As Boolean
Dim Np
For Np = 2 To UBound(Valores1)
If Valores1(Np) = Nn Then
JáFoiSorteadoEsteNumero = True
Exit Function
End If
Next
ReDim Preserve Valores1(UBound(Valores1) + 1)
Valores1(UBound(Valores1)) = Nn
JáFoiSorteadoEsteNumero = False
End Function
Agora tenho um banco access com uma tabela DADOS com os campos:
ID
Senha
No campo ID tenho gravado João
no campo Senha tenho gravado 32765
No form tenho dois Text um onde digito o nome o outro vou carregando o numero digitado. O problema é ao dar o click nos respectivos Labels para formar a senha numerica. Como faço essa comparação do nome com o numero digitado?
IF Nome= "João" and senha= me.senha then
else
end if
else
end if
é simples..
cada label vai ter DOIS valores.
para cada vez que ele clicar, vc já checa se o valor que foi digitado é um dos valores
exemplo:
ele clicou no primeiro label, cujo valor é 3 e 1:
(3 - 1)
if mid(SENHA, 1, 1) = 3 or mid(SENHA, 1, 1) = 1 then
bSenhaValida = TRUE
else
bSenhaValida = FALSE
end if
aà vc faz isso para todos.
Se todos eles forem bSenhaValida = TRUE entao a senha está OK
Eu nao vou te passar o codigo pq leva um pouquinho de tempo e nao tenho esse tempo, mas a logica é essa.
cada label vai ter DOIS valores.
para cada vez que ele clicar, vc já checa se o valor que foi digitado é um dos valores
exemplo:
ele clicou no primeiro label, cujo valor é 3 e 1:
(3 - 1)
if mid(SENHA, 1, 1) = 3 or mid(SENHA, 1, 1) = 1 then
bSenhaValida = TRUE
else
bSenhaValida = FALSE
end if
aà vc faz isso para todos.
Se todos eles forem bSenhaValida = TRUE entao a senha está OK
Eu nao vou te passar o codigo pq leva um pouquinho de tempo e nao tenho esse tempo, mas a logica é essa.
Irenko muito legal seu código, não testei mas deve funcionar bem.
A idéia do Thiago é perfeita, mas se quiser fazer tudo numa única rotina, poderia ser assim ao invés de a cada clique nos labels:
'Para usar
Espero que ajude, pois fiz direto aqui.
A idéia do Thiago é perfeita, mas se quiser fazer tudo numa única rotina, poderia ser assim ao invés de a cada clique nos labels:
Private Function TestaSenha(valor as long,Senha as long) as Boolean
dim i as long
dim Confere as Boolean
if len(valor) <> len(Senha) then
TestaSenha = False
Exit Function
end if
For i = 1 to len(valor)
if i <= len(valor) then
Confere = iif(Mid(valor,i,1)=Mid(Senha,i,1),True,False)
end if
next i
TestaSenha = Confere
End Function
'Para usar
IF TestaSenha(txtSenha.text,Rst.cmpSenha) = True Then
msgbox "Acesso liberado"
Else
msgbox "Acesso Negado, Senha Inválida"
End If
Espero que ajude, pois fiz direto aqui.
Cara..Fiquei boiando! Descupe-me mas não consegui acompanhar o raciocinio. Estou anaxando o arquivo, é VBA portanto, vê o que se pode fazer.
da uma olhada nesse exemplo.
não sei se a é melhor maneira de fazer mais funcionou
não sei se a é melhor maneira de fazer mais funcionou
HUGO, ficou muito bom, porem deveria carregar no text somente o numero correspondente ao primeiro dÃgito e esta carregando os dois que estão no label, mas esta funcionado. Ha alguma maneira de no text carregar somente um digito?
como é senha ele tem que aparecer com "*".
o que vc pode fazer é qdo o usuario clicar no label vc adiciona o caracter "*" no text e vai salvando os valores (os 2 pq ele pega os 10 numeros digitados pra comparar) em uma variavel. ai qdo terminar de digitar tudo ele verifica se a senha esta correta. agora se vc quer que ja vai aparecendo o numero correto da senha no text vc tem que usar a dica do lion e ir comparando toda hora que o usuario clicar no label.
o que vc pode fazer é qdo o usuario clicar no label vc adiciona o caracter "*" no text e vai salvando os valores (os 2 pq ele pega os 10 numeros digitados pra comparar) em uma variavel. ai qdo terminar de digitar tudo ele verifica se a senha esta correta. agora se vc quer que ja vai aparecendo o numero correto da senha no text vc tem que usar a dica do lion e ir comparando toda hora que o usuario clicar no label.
Não entendi bem o código do Lion. O que seria bSenhaValida?
no exemplo do lion toda vez que o usuario clicar no label ele vai comparar o conteudo do label com a senha gravada no banco de dados. por ex: se o usuario clicou no label 1 vc vai pegar os dois digitos e comparar com a primeira posição da senha. se ele clicou no label2 vc compara os 2 digitos com a segunda posição da senha no bd. e assim por diante.
na verdade vc tem que verificar qtos digitos ele ja selecionou pra saber em qual posição da senha vc tem que buscar.
Tópico encerrado , respostas não são mais permitidas