** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta RunSQL
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsulta RunSQL

 Responder Responder
Autor
Mensaje
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 400
Enlace directo a este mensaje Tema: Consulta RunSQL
    Enviado: 19/Enero/2016 a las 18:29
Ayer os pregunté sobre una consulta y a raíz de la respuesta he intentado ir un poco más lejos pero me he vuelto a atascar.

El tema es el siguiente:

Tengo una tabla Años Escolares con un campo SI/NO AñoInscripcionActual

y el campo principal IdAñoEscolar (Autonumérico)

El campo AñoInscripcionActual solo quiero que esté activado en un registro pero de vez en cuando quiero cambiar de registro.

Esto ahora lo quiero conseguir por medio de un combo que toma los valores de IdAñoEscolar que quiero introducir en la condición Were de esta forma:

Primero desactivo todo de la forma que me enseñasteis ayer, y luego trato de activar el campo AñoInscripcionActual en el registro donde IdAñoEScolar es igual al valor que toma el combo. He escrito:

Private Sub CboSelectorAñoInscripcion_Click()

DoCmd.RunSQL "Update [Años Escolares] SET AñoInscripcionActual = 0"
DoCmd.RunSQL "Update [Años Escolares] SET AñoInscripcionActual = -1 WERE IdAñoEscolar = 14"

End Sub

Lo del valor 14 es porque voy paso a paso, luego lo sustituiría por Me.CboSelectorAñoInscripcion

La primera consulta me funciona, pero la segunda no hay manera.




Arriba
jilo Ver desplegable
Colaborador
Colaborador


Unido: 19/Diciembre/2004
Localización: TAFALLA
Estado: Sin conexión
Puntos: 900
Enlace directo a este mensaje Enviado: 19/Enero/2016 a las 18:42
Hola
En un principio
DoCmd.RunSQL "Update [Años Escolares] SET AñoInscripcionActual = -1 WERE IdAñoEscolar = 14"

Deberia ser

DoCmd.RunSQL "Update [Años Escolares] SET AñoInscripcionActual = -1 WHERE IdAñoEscolar = 14"
Espero te sirva !!!!!!
Iñaki
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 400
Enlace directo a este mensaje Enviado: 19/Enero/2016 a las 19:14
Pues muchas gracias jilo, llevo toda la tarde volviéndome loco con comillas simples, dobles, corchetes... Lo que es no saber inglés.
No me esperaba un fallo tan tonto


de momento solucionado, pero no me cerréis, que quiero ahora sustituir el 14 por Me.CboSelectorAñoInscripcion y no las tengo todas conmigo
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9233
Enlace directo a este mensaje Enviado: 19/Enero/2016 a las 20:47
Por lo del ingles no debe suponer problema porque la sintaxis te la dice claramente en la ayuda de Access.

Solo faltan ganas de querer aprender y crecer. No te limites a copiar y pegar.
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 400
Enlace directo a este mensaje Enviado: 19/Enero/2016 a las 23:35
Pues ya lo he conseguido:

Private Sub CboSelectorAñoInscripcion_Click()

DoCmd.RunSQL "Update [Años Escolares] SET AñoInscripcionActual = 0"
DoCmd.RunSQL "Update [Años Escolares] SET AñoInscripcionActual = -1 WHERE IdAñoEscolar =" & Me.CboSelectorAñoInscripcion
Me.Requery
End Sub

Aunque me lanza dos mensajes de actualización, no es mayor problema. Si me dais alguna idea de como hacerlo en un solo paso, merecería la pena aprenderlo. Hay muchas cosas en que lo más importante es lo que te enseñan que el problema que te resuelven.
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9233
Enlace directo a este mensaje Enviado: 19/Enero/2016 a las 23:44
Hola Antonalo !

Hazlo con un SetWarnings.

Si quieres hacerlo en un solo paso entonces usa un execute, ejemplo:

CurrentDb.Execute "Update ..."


Editado por MexMan70 - 19/Enero/2016 a las 23:45
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 400
Enlace directo a este mensaje Enviado: 20/Enero/2016 a las 23:32
Gracias MexMan

SetWarnings no me convence porque desactiva los mensajes y tendría que volver a activarlos, tal como he leído.

El método CurrentDb.Execute es perfecto, quizás tendría que incorporar DbFailOnError tal como dice en la ayuda de Access, pero tengo que estudiarlo y creo que no lo necesito aquí ya que el campo si/no que intento modificar no creo que me dé ningún error.

Así que simplemente he cambiado a:

Private Sub CboSelectorAñoInscripcion_Click()
CurrentDb.Execute "Update [Años Escolares] SET AñoInscripcionActual = 0"
CurrentDb.Execute "Update [Años Escolares] SET AñoInscripcionActual = -1 WHERE IdAñoEscolar =" & Me.CboSelectorAñoInscripcion

Me.Requery
End Sub

No me da ningún mensaje de actualización y va perfecto.

Muchas gracias por esta nueva herramienta que me has enseñado a utilizar; MexMan, podéis cerrar

Editado por Antonalo - 21/Enero/2016 a las 08:28
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable