Problemas con KeyPress

Miguel
20 de Febrero del 2004
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?


favrycio
20 de Febrero del 2004
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

Baltasar
20 de Febrero del 2004
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