Problemas con KeyPress
Cuando pongo esto en un cuadro de texto de access :
If KeyAscii = 13 Then \'si pulsamos \'ENTER\'
Me.NOMBRE.SetFocus \'Cambiar el foco
Else
If KeyAscii <> 8 Then \'Si no es la tecla \'DEL\'
Me.APELLIDOS.Text = Me.APELLIDOS.Text & Chr (KeyAscii) \' completar el campo APELLIDOS
Else
If Len(Trim(Me.APELLIDOS.Text)) > 0 Then \' Si el campo no está vacÃo
Me.APELLIDOS.Text = Left(Me.APELLIDOS.Text, Len(Me.APELLIDOS.Text) - 1) \'Borrar el último caracter
End If
End If
End If
no me escribe lo que pongo, sino que lo duplica.
Ejemplo:
Pulso \'a\' y me aparece \'aa\'
A continuación pulso \'s\' y me aparece \'saas\' y asà sucesivamente
¿donde está el error?
If KeyAscii = 13 Then \'si pulsamos \'ENTER\'
Me.NOMBRE.SetFocus \'Cambiar el foco
Else
If KeyAscii <> 8 Then \'Si no es la tecla \'DEL\'
Me.APELLIDOS.Text = Me.APELLIDOS.Text & Chr (KeyAscii) \' completar el campo APELLIDOS
Else
If Len(Trim(Me.APELLIDOS.Text)) > 0 Then \' Si el campo no está vacÃo
Me.APELLIDOS.Text = Left(Me.APELLIDOS.Text, Len(Me.APELLIDOS.Text) - 1) \'Borrar el último caracter
End If
End If
End If
no me escribe lo que pongo, sino que lo duplica.
Ejemplo:
Pulso \'a\' y me aparece \'aa\'
A continuación pulso \'s\' y me aparece \'saas\' y asà sucesivamente
¿donde está el error?
lo que pasa es que cuando haces la validacion para eliminar el ultimo caracter este no se encuentra aun dentro de la caja de texto el caracter se imprime en la caja de texto despues de pasar por el keypress, una opcion es que hagas la validacion en el change
favrycio
favrycio
Lo que te falta es anular la entrada de la tecla pulsada, con Keyascii=0
If KeyAscii = 13 Then \'si pulsamos \'ENTER\'
Me.NOMBRE.SetFocus \'Cambiar el foco
Else
If KeyAscii <> 8 Then \'Si no es la tecla \'DEL\'
Me.APELLIDOS.Text = Me.APELLIDOS.Text & Chr (KeyAscii) \' completar el campo APELLIDOS
Else
If Len(Trim(Me.APELLIDOS.Text)) > 0 Then \' Si el campo no está vacÃo
Me.APELLIDOS.Text = Left(Me.APELLIDOS.Text, Len(Me.APELLIDOS.Text) - 1) \'Borrar el último caracter
End If
End If
End If
keyascii=0
Pero ahora, permÃteme una pregunta:
eso para qué es ?
es que no comprendo el objetivo de dicho código, salvo que sea para hacer que salte de campo al pulsar enter, con lo cual estás usando un sistema muy extraño.
Saludos
If KeyAscii = 13 Then \'si pulsamos \'ENTER\'
Me.NOMBRE.SetFocus \'Cambiar el foco
Else
If KeyAscii <> 8 Then \'Si no es la tecla \'DEL\'
Me.APELLIDOS.Text = Me.APELLIDOS.Text & Chr (KeyAscii) \' completar el campo APELLIDOS
Else
If Len(Trim(Me.APELLIDOS.Text)) > 0 Then \' Si el campo no está vacÃo
Me.APELLIDOS.Text = Left(Me.APELLIDOS.Text, Len(Me.APELLIDOS.Text) - 1) \'Borrar el último caracter
End If
End If
End If
keyascii=0
Pero ahora, permÃteme una pregunta:
eso para qué es ?
es que no comprendo el objetivo de dicho código, salvo que sea para hacer que salte de campo al pulsar enter, con lo cual estás usando un sistema muy extraño.
Saludos
