¿Cómo se borra un registro mediante una variable?

Acabo de hacer una base de datos en Access 2007, en la que quiero mediante el generador de código borrar un registro de una tabla. El registro a borrar tiene que coincidir con una variable que tengo ya creada y a la que se le pasa un número entero anteriormente.
No consigo pasarle la variable a la instrucción de eliminar, siempre me da error. ¿Cómo se pasa la variable?
Nombre tabla: parcheos
Nombre variable: miId1
Dim miId1 As Long
DoCmd.RunSQL "DELETE FROM parcheos WHERE Id='&miId1&'"

1 respuesta

Respuesta
1
No concatenas bien la SQL.
Si tuvieras esa consulta en el editor (para probar) y le indicaras un criterio fijo (imaginemos el Id 1), aparecería algo así:
DELETE * FROM parcheos WHERE Id=1
Si quisieramos ejecutar esa SQL desde VBA deberemos delimitarla como una cadena de texto ==> mediante comillas.
DoCmd.RunSQL "DELETE * FROM parcheos WHERE Id = 1"
Pero sabemos que eso somo nos borra el registro 1. Así que debemos sustituir el 1 por una variable. Dicha variable deberá estar "fuera" de la cadena o la tomará como un literal.
DoCmd.RunSQL "DELETE * FROM parcheos WHERE Id = " & miId1
Consejos:
Si utilizas CurrentDb. Execute en lugar de DoCmd. RunSQL te ahorraras los mensajes del tipo "Va a actualizar..."
Si el Id fuera alfanumérico, la delimitación cambia, puesto que los criterios se "entrecomillan". Como no parece tu caso no abundo en el tema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas