Ejecutar INSERT INTO en access vba me envía error

Se trata de lo siguiente, estoy tratando de hacer un insert into directamente con un botón, pero cuando ejecuto la sentencia sql me manda el error 3137 en tiempo de ejecución y después me dice que falta (;) punto y coma en la sentencia.

Les dejo el código para ver si me pueden apoyar a corregirlo:

Private Sub Comando16_Click()
CurrentDb.Execute "INSERT INTO Tabla1 (pregunta_1) VALUES ('" & Me.txtpregunta_1 & "') FROM Tabla1 WHERE id_vdi_master = '" + "clave_vdi.Value" + "';"

End Sub

2 respuestas

Respuesta
1

1. Tienes que quitar el FROM Tabla1 no lo lleva cuando insertas a menos que copies de una tabla a otra.

2.WHERE id_vdi_master = '" + "clave_vdi.Value" + "';" esta parte por que utilizas el ; no lo lleva y .... '" + "clave_vdi.Value" + "';" ¿a que refieres con esa linea?.

Unos ejemplo de un inserción es :

CurrentDb.Execute "INSERT INTO Login(IdLogin,Usuario,Contra,NombreUsuario) VALUES (" & Me.IdLoginHidden & " , '" & Me.UsuarioRegis & "' , '" & Me.PassRegis & "' , '" & Me.NombreRegis & "')", dbFailOnError
CurrentDb.Execute "INSERT INTO Login(IdLogin) VALUES (" & Me.IdLoginHidden & ") WHERE Usuario = 2", dbFailOnError

Hola,

Esta parte: WHERE id_vdi_master = '" + "clave_vdi.Value" + "';"  la estoy utilizando porque se trata de dos formularios, es decir; que cuando llamo el formulario de las preguntas, debo igualar la petición del id_vdi_master con un textbox llamado clave_vdi para que ambos formularios coincidan con el id, de esta manera hara la inserción en el mismo id_vdi_master que en el primer formulario, de otra forma solo hace inserciones secuenciales y cada vez que cierro el formulario me manda desde el primer registro nuevamente y lo que necesito es que sea secuencial en ambos formularios, es por ello que recurrí a la instrucción SQL.

Ahora bien, si le quito el FROM Tabla1, me dice que tengo que hacer referencia a una tabla por lo menos y me manda otro error y al depurador.

Espero que esta información esclarezca un poco el panorama y con ello me puedas brindar tu ayuda.

Saludos.

Vuelvo a lo mismo el FROM no se ocupa para el insert a menos que copies una tabla.

Otra pregunta,¿tu campo clave_vdi esta en el formulario donde tienes el botón de guardar?.

Si es así la inserción seria.

CurrentDb.Execute "INSERT INTO Tabla1 (pregunta_1) VALUES ('" & Me.txtpregunta_1 & "') WHERE id_vdi_master = " & Me.clave_vdi & "",dbFailOnError

Aqui te dejo la sintaxis

https://support.office.com/es-es/article/Instrucci%C3%B3n-INSERT-INTO-e12fd58b-33b1-479c-8221-e9f245ab8d24 

Y aqui de un video de insercion Currentdb.Execute

https://www.youtube.com/watch?v=zmSLysmFpF0&t=13s 

El código esta en la descripción si lo quieres descargar y ver.

Te hago llegar una imagen del entorno en donde me manda el error:

la idea de esto es que estando en este formulario a continuación, presionando el boton cuestionario indicado con la flecha negra:

Te despliegue el siguiente formulario:

mismo que al presionar el botón guardar indicado con la flecha roja realice la consulta, ya que la tabla para ambos formularios es la misma con la diferencia de que guardan en diferentes campos. Pero como te comento me sigue enviando el mismo error que te muestro en la primera imagen.

Ya vi tu error.

Te falta declarar

Option Explicit

https://msdn.microsoft.com/es-es/library/y9341s4f(v=vs.80).aspx 

Agrega esa línea. Abajo de option compare database

En el código

Respuesta
1

¿Por qué no pruebas con algo parecido a?

DoCmd.RunSQL "insert into copiaclientes(nombrecompañia) select nombrecompañia from clientes where ...."

Pero me pasa lo mismo que a Antonio, que a partir del where no entiendo absolutamente nada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas