Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: jdc en 16 Julio 2009, 22:12 pm



Título: Problema con KeyPress de un text
Publicado por: jdc en 16 Julio 2009, 22:12 pm
Hola, estoy haclendo un sistema pequeño y quiero validar a travez de enter. Les dejo el codigo:

Código
  1. Private Sub Text3_KeyPress(KeyAscii As Integer)
  2.    If KeyAscii = "13" Then
  3.        If (Text3.Text) <> "" Then
  4.            If IsNumeric(Text3.Text) Then
  5.            Set R = BD.OpenRecordset("usuario", dbOpenTable)
  6.            R.Index = "us"
  7.            R.Seek "=", (Text3.Text)
  8.                If Not R.NoMatch Then
  9.                    Text4.Text = R("pass")
  10.                    'Text4.Enabled = True
  11.                    'Command2.Enabled = True
  12.                Else
  13.                    MsgBox ("Lo siento, No existe")
  14.                    Text3.Text = ""
  15.                End If
  16.  
  17.            End If
  18.        End If
  19.    End If
  20. End Sub

El codigo deberia hacer que al presionar el enter despues de escribir el usuario mostrara el pass en otro text (text4 en este caso) pero no me toma el evento KeyPress, alguien ve algun error?

Si alguien lo quiere probar les dejo el codigo modificado ya que en el anterior tengo cargada una base de datos en el form.

Saludos y gracias


Título: Re: Problema con KeyPress de un text
Publicado por: Karcrack en 17 Julio 2009, 00:00 am
Fallo1: KeyAscii -> Integer ; "13" -> String
'Fallo2': No puedo comprobarlo, pero creo que seria mejor envez de IsNumeric() que utilizaras Val()

Solución:
Código
  1. Private Sub Text3_KeyPress(KeyAscii As Integer)
  2.    If KeyAscii = 13 Then
  3.        If (Text3.Text) <> "" Then
  4.            If Val(Text3.Text) > 0 Then 'Teniendo en cuenta que el Text3 no permite numeros negativos...
  5.            Set R = BD.OpenRecordset("usuario", dbOpenTable)
  6.            R.Index = "us"
  7.            R.Seek "=", Val(Text3.Text)
  8.                If Not R.NoMatch Then
  9.                    Text4.Text = R("pass")
  10.                    'Text4.Enabled = True
  11.                    'Command2.Enabled = True
  12.                Else
  13.                    MsgBox ("Lo siento, No existe")
  14.                    Text3.Text = ""
  15.                End If
  16.  
  17.            End If
  18.        End If
  19.    End If
  20. End Sub

Recuerda trabajar bien con el tipo de variable, cuando sean numero usa Val() ;)


Título: Re: Problema con KeyPress de un text
Publicado por: jdc en 17 Julio 2009, 00:51 am
Gracias Karcrack...

El error era que estaba pensando en numeros cuando de verdad necesito una palabra (nombre de usuario "user" en la base de datos). por lo que trataba de comprobar una palabra como numero... Lo que pasa es que primero lo iba a hacer con codigos numericos pero cambie por texto.

Osea:

Código
  1. Private Sub Text3_KeyPress(KeyAscii As Integer)
  2.    If KeyAscii = "13" Then
  3.        If (Text3.Text) <> "" Then
  4.                                                                        'If IsNumeric(Text3.Text) Then Esta comprobacion sobra!
  5.        Set R = BD.OpenRecordset("usuario", dbOpenTable)
  6.        R.Index = "us"
  7.        R.Seek "=", (Text3.Text)
  8.                If Not R.NoMatch Then
  9.                    Text4.Text = R("pass")
  10.                    'Text4.Enabled = True
  11.                    'Command2.Enabled = True
  12.                Else
  13.                    MsgBox ("Lo siento, No existe")
  14.                    Text3.Text = ""
  15.                End If
  16.  
  17.                                                                             'End If  Esto tambien
  18.        End If
  19.    End If
  20. End Sub

Quitando eso el codigo ya hace lo que quiero, que es evaluar el nombre de usuario y tirar la contraseña asociada a un text para posteriormente hacer una comprobacion con el boton de ingresar...

Por ejemplo el pass queda en text4 por lo que si quiero comparar con text5 en el boton seria:

Código
  1. If (Text4.Text = Text5.Text) Then
  2. Haz esto...
  3. Else
  4. Esto otro
  5. End If

Muchas gracias :D


Título: Re: Problema con KeyPress de un text
Publicado por: cassiani en 17 Julio 2009, 01:29 am
'Fallo2': No puedo comprobarlo, pero creo que seria mejor envez de IsNumeric() que utilizaras Val()
Recuerda trabajar bien con el tipo de variable, cuando sean numero usa Val() ;)

eso no lo entendi..


Título: Re: Problema con KeyPress de un text
Publicado por: seba123neo en 17 Julio 2009, 01:42 am
Hola, estoy haclendo un sistema pequeño y quiero validar a travez de enter. Les dejo el codigo:

Código
  1. Private Sub Text3_KeyPress(KeyAscii As Integer)
  2.    If KeyAscii = "13" Then
  3.        If (Text3.Text) <> "" Then
  4.            If IsNumeric(Text3.Text) Then
  5.            Set R = BD.OpenRecordset("usuario", dbOpenTable)
  6.            R.Index = "us"
  7.            R.Seek "=", (Text3.Text)
  8.                If Not R.NoMatch Then
  9.                    Text4.Text = R("pass")
  10.                    'Text4.Enabled = True
  11.                    'Command2.Enabled = True
  12.                Else
  13.                    MsgBox ("Lo siento, No existe")
  14.                    Text3.Text = ""
  15.                End If
  16.  
  17.            End If
  18.        End If
  19.    End If
  20. End Sub

El codigo deberia hacer que al presionar el enter despues de escribir el usuario mostrara el pass en otro text (text4 en este caso) pero no me toma el evento KeyPress, alguien ve algun error?

Si alguien lo quiere probar les dejo el codigo modificado ya que en el anterior tengo cargada una base de datos en el form.

Saludos y gracias

algunas cosas que veo...

1 - si preguntas si es numerico , ni hace falta preguntar si es <> ""
2 - podes validar para que el textbox solo acepte numero y te olvidas de Val() y de la validacion anterior.
3 - usar DAO hoy en dia es como comparar la playstation 3 con la NES.

saludos.


Título: Re: Problema con KeyPress de un text
Publicado por: jdc en 17 Julio 2009, 03:31 am
algunas cosas que veo...

1 - si preguntas si es numerico , ni hace falta preguntar si es <> ""

Ok gracias lo tendre presente...

2 - podes validar para que el textbox solo acepte numero y te olvidas de Val() y de la validacion anterior.

Necesito que acepte letras y numeros :)

3 - usar DAO hoy en dia es como comparar la playstation 3 con la NES.

Dejame aprender bien esto y me pongo con ADO que igual me interesa aprenderlo, usar access es como usar atari, pero se me hizo interesante aprender tambien :)

Gracias por los consejos ;)