Imprimir página | Cerrar ventana

Completar SQL delete

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84594
Fecha de impresión: 20/Abril/2024 a las 08:49


Tema: Completar SQL delete
Publicado por: Abel
Asunto: Completar SQL delete
Fecha de publicación: 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




Respuestas:
Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Abel
Fecha de publicación: 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


Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: Abel
Fecha de publicación: 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



Publicado por: Mihura
Fecha de publicación: 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.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Abel
Fecha de publicación: 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


Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: Abel
Fecha de publicación: 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 


Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web



Imprimir página | Cerrar ventana