Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
Postada em 31/08/2006 08:18 hs
Tenho uma tabela RST com os campos:
ID - onde tenho gravado o nome = Joao (exemplo) Senha - onde tenho gravado os numeros = 32765 (exemplo)
no form tenho os text:
TxtNome TxtSenha
e
05 Text com os caption conforme abaixo:
(3-4) (0-1) (9-5) (2-7) (8-6)
Preciso que ao clicar nestes textBox o codigo va comparado o conteudo do text com o primeiro numero gravado no campo senha e carregue no TxtSenha, é possível?
|
|
|
|
|
Postada em 31/08/2006 09:33 hs
Tenta assim: Dim Senha as string 'Procurando o login: Set RS = Conexao.Execute("SELECT senha from Tabela WHERE login = '" & txtNome & "'") 'CASO ACHOU O LOGIN IF NOT RS.EOF THEN Senha = RS(0) 'Verifica os 5 textboxes for i=0 to 4 for j=0 to len(senha) 'Verifica se o caractere está na senha if InStr(1, textbox(0).text, Mid(senha, j, 1)) <> 0 then TxtSenha = TxtSenha & Mid(senha, j, 1) endif next next ENDIF if txtsenha <> senha then msgbox "Senha inválida!",vbcritical T+
|
TÓPICO EDITADO
|
|
|
|
Irenko
|
BELO HORIZONTE MG - BRASIL
|
|
Postada em 31/08/2006 11:39 hs
Fiz conforme abaixo, mas deu a mensagem de erro na linha entre parenteses:
"Argumento ou chamada de procedimento invalida"
Gostaria que ao clicar no Text onde (3-1) ja carregace no TextSenha o numero correspondente ao da tabela.
Sub ExecBtn(NumCtrl As Integer)
Dim Senha As String 'Procurando o login: Set Rst = BancoMid.Execute("SELECT senha from Usuario WHERE ID = '" & UserForm1.Nome & "'") 'CASO ACHOU O LOGIN If Not Rst.EOF Then Senha = Rst(0) 'Verifica os 5 textboxes For i = 0 To 4 For J = 0 To Len(Senha) 'Verifica se o caractere está na senha ( If InStr(1, UserForm1("LB" & NumCtrl).Caption, Mid(Senha, J, 1)) <> 0 Then ) UserForm1.TxtSenha = UserForm1.TxtSenha & Mid(Senha, J, 1) End If Next Next End If If UserForm1.TxtSenha <> Senha Then MsgBox "Senha inválida!", vbCritical End Sub
|
|
|
|
Postada em 02/09/2006 20:51 hs
Hummm vc quer fazer igual ao bankline do itaú?? Vamos novamente, com o código reformulado: Para o exemplo tenho 2 caixas de texto e 5 botões de um array. Só criar um botão dentro do formulário e copiar/colar no próprio. Vai ser perguntado se vc quer criar um controle array e vc afirma. Bom tendo as caixas de texto e os 5 botões vc vai fazer o seguinte: Primeiro vc vai fazer a consulta para saber qual é a senha Dim Senha as String Private Sub txtNome_LostFocus() 'Ao sair do foco da caixa de texto nome a consulta com a senha vai ser realizada 'Procurando o login: Set RS = Conexao.Execute("SELECT senha from Tabela WHERE login = '" & txtNome & "'") IF NOT RS.EOF THEN Senha = RS(0) ENDIF End Sub Agora vamos à senha: Private Sub Command1_Click(Index As Integer) IF Senha <> "" then Call p_Senha(Index) If Len(txtSenha) = txtSenha.MaxLength Then If txtSenha <> senha Then MsgBox "senha inválida" Else MsgBox "senha aceita" End If txtSenha = "" End If ELSE txtSenha = TxtSenha & " " If Len(txtSenha) = txtSenha.MaxLength Then msgbox "Senha inválida" ENDIF End Sub Private Sub p_Senha(ByVal Idx As Integer) If txtSenha <> "" Then If InStr(1, Command1(Idx).Caption, Mid(senha, Len(txtSenha) + 1, 1)) <> 0 Then txtSenha = txtSenha & Mid(senha, Len(txtSenha) + 1, 1) Else txtSenha = txtSenha & Mid(Command1(Idx).Caption, 1, 1) End If Else If InStr(1, Command1(Idx).Caption, Mid(senha, 1, 1)) <> 0 Then txtSenha = txtSenha & Mid(senha, 1, 1) Else txtSenha = txtSenha & Mid(Command1(Idx).Caption, 1, 1) End If End If End Sub Bom, o q está ae é o seguinte. O usário irá digitar o login. Caso tenha encontrado segue para a caixa de senha. Bom, como fiz um array dos botões então controlo todos através do evento click e jogo o index, para saber qual botão apertei, numa procedure e ela faz o tratamento de senha. Caso o login não seja válido o sistema "disfarça" como se tivesse aceitado o login e no final dá uma mensagem de senha inválida. Pelos meus testes parece q deu certo mas mesmo assim faça o teste com vc ae... qq dúvida é só postar t+
|
|
|
|
Postada em 02/09/2006 20:56 hs
Hummm vc quer fazer igual ao bankline do itaú?? Vamos novamente, com o código reformulado: Para o exemplo tenho 2 caixas de texto e 5 botões de um array. Só criar um botão dentro do formulário e copiar/colar no próprio. Vai ser perguntado se vc quer criar um controle array e vc afirma. Bom tendo as caixas de texto e os 5 botões vc vai fazer o seguinte: Primeiro vc vai fazer a consulta para saber qual é a senha Dim Senha as String Private Sub txtNome_LostFocus() 'Ao sair do foco da caixa de texto nome a consulta com a senha vai ser realizada 'Procurando o login: Set RS = Conexao.Execute("SELECT senha from Tabela WHERE login = '" & txtNome & "'") IF NOT RS.EOF THEN Senha = RS(0) ENDIF End Sub Agora vamos à senha: Private Sub Command1_Click(Index As Integer) IF Senha <> "" then Call p_Senha(Index) If Len(txtSenha) = txtSenha.MaxLength Then If txtSenha <> senha Then MsgBox "senha inválida" Else MsgBox "senha aceita" End If txtSenha = "" End If ELSE txtSenha = TxtSenha & " " If Len(txtSenha) = txtSenha.MaxLength Then msgbox "Senha inválida" ENDIF End Sub Private Sub p_Senha(ByVal Idx As Integer) If txtSenha <> "" Then If InStr(1, Command1(Idx).Caption, Mid(senha, Len(txtSenha) + 1, 1)) <> 0 Then txtSenha = txtSenha & Mid(senha, Len(txtSenha) + 1, 1) Else txtSenha = txtSenha & Mid(Command1(Idx).Caption, 1, 1) End If Else If InStr(1, Command1(Idx).Caption, Mid(senha, 1, 1)) <> 0 Then txtSenha = txtSenha & Mid(senha, 1, 1) Else txtSenha = txtSenha & Mid(Command1(Idx).Caption, 1, 1) End If End If End Sub Bom, o q está ae é o seguinte. O usário irá digitar o login. Caso tenha encontrado segue para a caixa de senha. Bom, como fiz um array dos botões então controlo todos através do evento click e jogo o index, para saber qual botão apertei, numa procedure e ela faz o tratamento de senha. Caso o login não seja válido o sistema "disfarça" como se tivesse aceitado o login e no final dá uma mensagem de senha inválida. Pelos meus testes parece q deu certo mas mesmo assim faça o teste com vc ae... qq dúvida é só postar t+
|
|
|
|