Access - SendKeys

   
Vista:

SendKeys

Publicado por Angel (84 intervenciones) el 02/12/2010 14:38:49
Hola, gracias por la ayuda, vereis estoy intentando deshacer los cambios en el registro actual con SendKeys, y no me funiona. Alguien podría decirme porque? Pego el código que uso: Por cierto de Tarivo.

Private Sub Form_AfterUpdate()
Dim Respuesta As Integer, sSql As String

If Not Me.NewRecord Then
Respuesta = MsgBox("Se ha modificado el registro" & vbCrLf & _
"¿Quiere confirmar los cambio?" & vbCrLf & vbCrLf & _
"¿Desea continuar?", vbQuestion + vbYesNo, "CONTROL DE CAMBIO EN REGISTRO")
If Respuesta = vbNo Then
'No realizo cambio
SendKeys "{ESC}", True
Else
'Realizo los cambios
If Nz(NomTecnicoModificacion, "") = "" Then
NomTecnicoModificacion = Forms!FormAcceso.TxtContraseña

sSql = "INSERT INTO TablaModificaciones2 (NumRegistro,NomTecnico,FechaModificacion) "
sSql = sSql & " VALUES (" & Me.Numregistro & ",'" & NomTecnicoModificacion & "'," & Str(CDbl(Now())) & ")"
CurrentDb.Execute sSql
Me.SubFormUltimaModificacion.Requery

End If
End If
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SendKeys

Publicado por pepe (67 intervenciones) el 02/12/2010 15:05:48
Prueba con SendKeys "{ESC}{ESC}", True

Sabiendo que SendKeys es como pulsar las teclas, puedes probarlo manualmente para ver el comportamiento de Access.

Si cambiamos 1 campo de un registro y pulsamos ESC, se anulará el cambio en dicho campo, y como solo hemos cambiado un campo, el registro quedará como estaba. Pero si son varios los campos que hemos cambiado, con pulsar una vez ESC conseguiremos anular el cambio en el último campo modificado, pero no de todo el registro. Para ello debemos pulsar 2 veces ESC, el segundo ESC anulará los cambios en todo el registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SendKeys

Publicado por Angel (84 intervenciones) el 02/12/2010 18:32:21
Ya Pepe, ya había probado aplicando la linea de código SendKeys "{ESC}", True en el evento click de un botón, y comprobé que funcionaba tal y como dices, pero lo que me para es que al situarlo entre el código de mi primera nota, no hace nada, nada ni mensaje de error siquiera. ¿Sabrias decirme porqué?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SendKeys

Publicado por pepe (67 intervenciones) el 02/12/2010 22:46:59
Ya Angel, ya veo que has estado haciendo tus pruebas, menos mal que lo has detallado en tu consulta. Como bien te ha indicado "mi menda", debes incluir el código en el evento "antes de actualizar" y no "después de actualizar".

Por cierto, si decides incluir el codigo en dicho evento, es conveniente que añadas otro ESC al comando SendKeys o seguira sin funcionarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SendKeys

Publicado por mi menda (1111 intervenciones) el 02/12/2010 20:25:55
Hola:
Creo que tendrías que poner el código en el evento antes de actualizar o antes de insertar. En el evento que utilizas, el registro ya ha sido introducido, y solo lo puedes anular, no modificar.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SendKeys

Publicado por Angel (84 intervenciones) el 05/12/2010 11:58:18
Hola mi menda, verás probé el código en el evento "antes de actualizar" y funciona perfectamente; pero tengo otro problema que es lo que me ha hecho demorarme tanto en responder. Tengo otra línea de código en ense mismo evento y no consigo fundir ambos en uno. A ver si me podeis ayudar, pego ambos códigos que dicho sea de paso son de Tarivo. Gracias.

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim Respuesta As Integer, sSql As String
If Not Me.NewRecord Then
Respuesta = MsgBox("Se ha modificado el registro" & vbCrLf & _
"¿Quiere confirmar los cambio?" & vbCrLf & vbCrLf & _
"¿Desea continuar?", vbQuestion + vbYesNo, "CONTROL DE CAMBIO EN REGISTRO")
If Respuesta = vbYes Then
'Realizo los cambios
If Nz(NomTecnicoModificacion, "") = "" Then
NomTecnicoModificacion = Forms!FormAcceso.TxtContraseña
End If

sSql = "INSERT INTO TablaModificaciones2 (NumRegistro,NomTecnico,FechaModificacion) "
sSql = sSql & " VALUES (" & Me.Numregistro & ",'" & NomTecnicoModificacion & "'," & Str(CDbl(Now())) & ")"
CurrentDb.Execute sSql
Me.SubFormUltimaModificacion.Requery

Else

SendKeys "{ESC}", True
Cancel = True


End If
End If
End Sub ' Form_BeforeUpdate

Private Sub Form_BeforeUpdate(Cancel As Integer)
If RegistroVacio(Me, "txtidProyecto", "txtFecha") Then
' si no he modificado el registro, salgo sin guardar el cambio en el número
DoCmd.RunCommand acCmdUndo
End If
End Sub

Bueno "RegistroVacio" está en un módulo y hace la funcion de verificar si estan vacios los registros del form, menos los excluidos. Creo que así a bote pronto os puede resultar dificil la ayuda, de todas formas espero vuestras posibles intervenciones y poder conseguir algo. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SendKeys

Publicado por rafitruji (66 intervenciones) el 09/12/2010 12:07:52
Hago un llamamiento para obtener atención a mi pregunta, no olvidarme que necesito alguna aportación por mínima que sea, esto me trae loca. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar