SENHA

IRENKO 23/08/2006 18:25:44
#166901
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:

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?


USUARIO.EXCLUIDOS 23/08/2006 19:27:43
#166909
IF Nome= "João" and senha= me.senha then

else

end if
LIONHEART 23/08/2006 19:33:02
#166910
é 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.
LUIS.HERRERA 23/08/2006 20:49:34
#166928
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:

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.
IRENKO 24/08/2006 07:41:02
#166958
Cara..Fiquei boiando! Descupe-me mas não consegui acompanhar o raciocinio. Estou anaxando o arquivo, é VBA portanto, vê o que se pode fazer.
HUGOSSOUZA 24/08/2006 09:03:27
#166972
da uma olhada nesse exemplo.
não sei se a é melhor maneira de fazer mais funcionou

IRENKO 24/08/2006 11:05:36
#167000
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?
HUGOSSOUZA 24/08/2006 11:15:29
#167006
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.
IRENKO 24/08/2006 11:21:11
#167013
Não entendi bem o código do Lion. O que seria bSenhaValida?
HUGOSSOUZA 24/08/2006 11:31:51
#167018
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.

HUGOSSOUZA 24/08/2006 11:37:11
#167022
na verdade vc tem que verificar qtos digitos ele ja selecionou pra saber em qual posição da senha vc tem que buscar.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas