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

Completar SQL delete

 Responder Responder
Autor
Mensaje
Abel Ver desplegable
Nuevo
Nuevo


Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 24
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Abel Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Completar SQL delete
    Enviado: 08/Julio/2019 a las 13:40

Hola,  

Tengo una duda, a ver si me podeis ayudar. He hecho una consulta update sobre una tabla que he llamado tabla 3, la llamo desde un evento de formulario que me actualiza sólo un campo de la tabla 3 ( el campo VINVehiculo ). 

DoCmd.RunSQL "update tabla3 set VINVehiculo = '" & Form_Formulario1.VINVehiculo & "' WHERE id = (select id from tabla3 where Posicion= '" & Form_Formulario1.Posicion & "')"

Hasta aquí perfecto.

Ahora necesito crear otra consulta que me borre solo el mismo registro la tabla 3, no la línea completa, Este registro lo encuentra en un campo que se llama VINVehiculo de un formulario llamado formularioesp2 .pero cuando creo la sentencia me devuelve un error en la clausula FROM :  

DoCmd.RunSQL "delete from tabla3 set VINVehiculo = '" & Form_Formularioesp2.VINVehiculo & "' WHERE id = (select id from tabla3 where Posicion= '" & Form_Formularioesp2.Posicion & "')"

Me podeis ayudar con esta sentencia delete por favor ?

Gracias

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11085
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 14:12
¿Cuál es la diferencia entre borrar un registro y la línea completa? .... para mi es lo mismo.

La segunda consulta  que pones es un *%&", mezclas una delete con una update.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Abel Ver desplegable
Nuevo
Nuevo


Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 24
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Abel Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 15:37
Gracias Mihura, 

Seguro que no me expreso correctamente, disculpa.

Para mi borrar un registro , debe equivaler a borrar la información de un campo conservando la información general del Id.  Mira el ejemplo adjunto, yo con la consulta delete, lo que quiero es borrar la información sólo del campo VIN Vehiculo, no la de la posición.  

Podrias corregir mi consulta como crees que funcionaria ?

Tabla3
Id Posicion VINVehiculo Status
1 Plaza 1 Pepe15
2 Plaza 2 Pepe 16
3 Plaza 3 Pepe 17
4 Plaza 4 Pepe 18
5 Plaza 5 Pepe 19
6 Plaza 6 Pepe 20
7 Plaza 7 Pepe21
9 Plaza 9 Pepe22
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11085
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 15:50
Eso se llama inicializar ...

UPDATE tabla SET Campo = '' WHERE ID = 1


Son dos comillas simples.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Abel Ver desplegable
Nuevo
Nuevo


Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 24
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Abel Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 16:02
Gracias Jesus, 

La consulta update ya la hago bien, la que tengo problemas es la consulta delete, necesito ambas... disculpa si no me he expresado con claridad desde el inicio. 

En el primer mensaje me has indicado que mezclaba *%&"  y no me ha quedado muy claro, donde cometo el error ? Mi consulta delete era, te pedia si por favor, podías corregir lo que no hacia bien, por aprenderlo.

DoCmd.RunSQL "delete from tabla3 set VINVehiculo = '" & Form_Formularioesp2.VINVehiculo & "' WHERE id = (select id from tabla3 where Posicion= '" & Form_Formularioesp2.Posicion & "')"

Gracias

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11085
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 16:17
DELETE borra (elimina, hace que desaparezca) un registro (fila) de una tabla.

UPDATE cambia el valor de uno o varios campos.

Lo que tú llamas borrar es poner un campo a vacio, o nulo, o cero .... pero NO ES BORRAR.




Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11991
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 16:46
Muchas veces el problema es la nomenclatura que se utiliza. Tenemos bases de datos, tablas, registros, campos y propiedades. Yo tengo clientes que a las tablas les llaman bases de datos. Hay que estar realizando una tarea de formación continua... en fin.

En tu caso concreto necesitas actualizar un campo de un determinado registro de una tabla

En la primera SQL se trata de actualizar un campo a un valor; en el segundo de dejar un campo vacío. En ambos casos se trata de actualizar y no de borrar. 

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Abel Ver desplegable
Nuevo
Nuevo


Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 24
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Abel Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 17:08
Gracias a ambos, teneis razón, hay muchas nomenclaturas y uno que es nuevo también comete errores, siempre es bueno aprender a hablar con propiedad. Ahora que os he pillado ( me ha costado lo mio... ) 
me da un error , me has dicho dos comillas simples pero tampoco..... que hago mal ?

DoCmd.RunSQL " update tabla3 SET VINVehiculo = " where ID = 1
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11991
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 17:13
DoCmd.RunSQL "UPDATE tabla3 SET VINVehiculo = '' WHERE ID = 1"

Las primeras son comillas dobles; después del igual van 2 apostrofes y se cierra la línea con comillas dobles.
Xavi, un minyó de Terrassa

Mi web
Arriba
Abel Ver desplegable
Nuevo
Nuevo


Unido: 08/Julio/2019
Localización: España
Estado: Sin conexión
Puntos: 24
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Abel Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 17:18
Gracias Xavi, al final había llegado a la solución, pero una pregunta.... esto no esta actualizando mi registro de la tabla 3 a cero , vacio o nulo, no ejecuta ninguna acción sobre la tabla3 
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11991
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Julio/2019 a las 17:30
Esa instrucción deberia actualizar UNICAMENTE el campo VINVehiculo a (vacío) del registro cuyo ID sea = 1 de la tabla3.

Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable