Problema con KeyPress de un text

Iniciado por jdc, 16 Julio 2009, 22:12 PM

0 Miembros y 1 Visitante están viendo este tema.

jdc

Hola, estoy haclendo un sistema pequeño y quiero validar a travez de enter. Les dejo el codigo:

Código (vb) [Seleccionar]
Private Sub Text3_KeyPress(KeyAscii As Integer)
    If KeyAscii = "13" Then
        If (Text3.Text) <> "" Then
            If IsNumeric(Text3.Text) Then
            Set R = BD.OpenRecordset("usuario", dbOpenTable)
            R.Index = "us"
            R.Seek "=", (Text3.Text)
                If Not R.NoMatch Then
                    Text4.Text = R("pass")
                    'Text4.Enabled = True
                    'Command2.Enabled = True
                Else
                    MsgBox ("Lo siento, No existe")
                    Text3.Text = ""
                End If
       
            End If
        End If
    End If
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

Karcrack

Fallo1: KeyAscii -> Integer ; "13" -> String
'Fallo2': No puedo comprobarlo, pero creo que seria mejor envez de IsNumeric() que utilizaras Val()

Solución:
Código (vb) [Seleccionar]
Private Sub Text3_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        If (Text3.Text) <> "" Then
            If Val(Text3.Text) > 0 Then 'Teniendo en cuenta que el Text3 no permite numeros negativos...
            Set R = BD.OpenRecordset("usuario", dbOpenTable)
            R.Index = "us"
            R.Seek "=", Val(Text3.Text)
                If Not R.NoMatch Then
                    Text4.Text = R("pass")
                    'Text4.Enabled = True
                    'Command2.Enabled = True
                Else
                    MsgBox ("Lo siento, No existe")
                    Text3.Text = ""
                End If

            End If
        End If
    End If
End Sub


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

jdc

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 (vb) [Seleccionar]
Private Sub Text3_KeyPress(KeyAscii As Integer)
    If KeyAscii = "13" Then
        If (Text3.Text) <> "" Then
                                                                        'If IsNumeric(Text3.Text) Then Esta comprobacion sobra!
        Set R = BD.OpenRecordset("usuario", dbOpenTable)
        R.Index = "us"
        R.Seek "=", (Text3.Text)
                If Not R.NoMatch Then
                    Text4.Text = R("pass")
                    'Text4.Enabled = True
                    'Command2.Enabled = True
                Else
                    MsgBox ("Lo siento, No existe")
                    Text3.Text = ""
                End If
       
                                                                             'End If  Esto tambien
        End If
    End If
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 (vb) [Seleccionar]
If (Text4.Text = Text5.Text) Then
Haz esto...
Else
Esto otro
End If


Muchas gracias :D

cassiani

Cita de: Karcrack en 17 Julio 2009, 00:00 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..

seba123neo

#4
Cita de: janito24 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 (vb) [Seleccionar]
Private Sub Text3_KeyPress(KeyAscii As Integer)
   If KeyAscii = "13" Then
       If (Text3.Text) <> "" Then
           If IsNumeric(Text3.Text) Then
           Set R = BD.OpenRecordset("usuario", dbOpenTable)
           R.Index = "us"
           R.Seek "=", (Text3.Text)
               If Not R.NoMatch Then
                   Text4.Text = R("pass")
                   'Text4.Enabled = True
                   'Command2.Enabled = True
               Else
                   MsgBox ("Lo siento, No existe")
                   Text3.Text = ""
               End If
       
           End If
       End If
   End If
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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

jdc

Cita de: seba123neo en 17 Julio 2009, 01:42 AM
algunas cosas que veo...

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

Ok gracias lo tendre presente...

Cita de: seba123neo en 17 Julio 2009, 01:42 AM
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 :)

Cita de: seba123neo en 17 Julio 2009, 01:42 AM
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 ;)