No me funciona consulta actualización access

Quiero actualizar un campo si/no de una tabla mediante una consulta de actualización.

La tabla es TIP(id, IP, Ocupada), lo pretendo hacer es desde un Formulario en el cual tengo un cbo con referencia a las Ip el origen del combo es TIP con los campos id, IP y coge como valor el segundo.

En el evento después de actualizar le he puesto el siguiente código pero no me funciona:

Private Sub IP_AfterUpdate()
Dim miSql As String
miSql = "update TIP set Ocupado=true where IP= & me.IP"
End Sub

Lo que quiero hacer es que me actualice ese campo y si selecciono uno que este ocupado me lo diga, esto ultimo también lo podría filtrar mediante criterio en la consulta.

3 Respuestas

Respuesta
1

Tienes mal la SQL:

"UPDATE TIP SET Ocupado=True WHERE IP=" & Me.IP

Y si así no te va tampoco prueba de esta otra forma:

"UPDATE TIP SET Ocupado=-1 WHERE IP=" & Me.IP

Todo esto suponiendo que el campo IP es numérico, si no ha de ir entrecomillado, como ya deberías saber... XD

Private Sub IP_AfterUpdate()
Dim miSql As String
miSql = "UPDATE TIP SET Ocupado=-1 WHERE IP= & me.IP"
DoCmd.RunSQL miSql
End Sub

He probado así y con Ocupado=true y tampoco me funciona me da error 3075:

El campo en el formulario se llama IP y el campo de la tabla TIP también se llama así.

El error lo marca en la línea de ejecución de la SQL

Sigues poniendo mal la SQL, fíjate en la colocación de las comillas.

Respuesta
1

Aparte de que como bien dice el compañero tienes mal la instrucción SQL, una vez construida deberías hacer que se ejecute.

Después de la línea corregida deberías poner:

CurrentDB. Execute(miSql)

Gracias Tomas he probado con lo que me dijo Sveinbjorn y poniendo al final del código con las dos opciones y no me funciona:

DoCmd.RunSQL miSql
CurrentDB. Execute(miSql)

Perdona Kike, puse un espacio después del punto.

Verifica que funcione sin espacio y si no dímelo y esta noche te lo verifico.

¡Gracias! Funciona correctamente de las dos formas ya.

Private Sub IP_AfterUpdate()
Dim miSql As String
miSql = "UPDATE TIP SET Ocupada=true WHERE IP='" & Me.IP & "'"
'DoCmd.RunSQL miSql
 CurrentDb.Execute (miSql)
End Sub
Respuesta
1

En el WHERE puede ser que necesites indicar que campo del combo es el que estas comparando y si es un campo texto necesitara comilla sencilla:

"UPDATE TIP SET Ocupado=-1 WHERE IP='" & Me.IP.column(1) & "'"

¡Gracias! He conseguido que me funciones de esta manera

Private Sub IP_AfterUpdate()
Dim miSql As String
miSql = "UPDATE TIP SET Ocupada=true WHERE IP='" & Me.IP & "'"
DoCmd.RunSQL miSql
End Sub

Mx-DF

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas