No puedo Ingresar datos a una tabla mediante un código visual

Necesito ingresar unos datos a una tabla llamada "PdLaminaxOrdendeProducción", estos los quiero ingresar a través de unos datos que selecciono en un formulario donde los campos son independientes, al momento de ejecutar el comando me arroja el error:

Se ha producido el error '3061' en tiempo de ejecución: Pocos Parámetros. Se esperaba 2.

Código:

Private Sub Comando11_Click()
Set dbs = CurrentDb
str = "INSERT INTO PDLaminaxOrdendeProducción (IdRef_Lamin_Insumo,QLaminas,LoteNo,TipoSolicitud,IdMotivoAD,IdActadeVanos) "

str = str & " SELECT " & [Forms]![PDIngresoLaminasAdicionalesxOP]![Id Insumo] & ", " & [Forms]![PDIngresoLaminasAdicionalesxOP]![QLaminas] & ", " & [Forms]![PDIngresoLaminasAdicionalesxOP]![LoteNo] & ", " & [Forms]![PDIngresoLaminasAdicionalesxOP]![TipoSolicitud] & ", " & [Forms]![PDIngresoLaminasAdicionalesxOP]![IdMotivoAD] & ", " & [Forms]![PDDatosMueblesDespiece]![IdActadeVanos]
dbs.Execute (str)

End Sub

Ya verifique nombres y están igual a los campos de la tabla y el formulario.

Respuesta
1

La sintaxis de INSERT es:

INSERTO INTO tabla (Campo1, Campo2, ..., CampoN) VALUES (Valor1, Valor2, ..., ValorN)

Modifica la sentencia y prueba. Si no funciona avisa y lo miramos.

Hola, no me funciono, me arroja el siguiente error: Se ha producido el error '3078' en tiempo de ejecución: 

el motor de la base de datos de micrisoft access no puede encontrar la tabla o consulta de entrada 'INSERTO INTO'.

Siempre he utilizado 'INSERT INTO'.

Quedo atento a cualquier otra ayuda.

Los problemas de escribir con prisas.

La sintaxis correcta es

INSERT INTO tabla(Campo1, Campo2, ..., CampoN) VALUES (Valor1, Valor2, ..., ValorN)

Ten en cuenta que cuando pongas los valores tendrás que componer una cadena como bien hacías en tu post, pero atento a los tipos de datos:

  • Si el campo es un número con decimales (doble), o una cadena de texto, tienes que encerrarlo entre comillas simples
  • Si el campo es una fecha o una hora tienes que encerrarlo entre #
  • Si el campo es de fecha tienes, además, que guardarlo en notación anglosajona, es decir, mes/dia/año

De este modo, supongamos que tienes 3 campos y que el primero es entero, el segundo es una fecha y el tercero es un número decimal o un texto. La sentencia SQL quedaría como:

INSERT INTO Tabla(Campo1, Campo2, Campo3) VALUES (" & Valor1 & ", #" & Format(Valor2,"mm/dd/yyyy") & "#, '" & Valor3 & "')"

Prueba a ver que tal, y si hay algún problema avísame.

Tomas, buenos mucha gracias, funciono, tengo una pregunta adicional, necesito agregar a estos campos un "Solicita", como hago en la sintaxis para que me tome el CurrentUser. intenten hacerlo de la siguiente forma pero me arroja el siguiente error: 

Se ha producido el error '3075' en tiempo de ejecución:

error de sintaxis (falta operador) en la expresión de consulta '1strusuario1.

Private Sub Comando11_Click()
Set dbs = CurrentDb
strUsuario = CurrentUser
str = "INSERT INTO PDCantosxOrdendeProducción (IdCantos,QCantos,LoteNo,TipoSolicitud,IdMotivoAd,IdActadeVanos,Solicita) "

str = str & " SELECT " & [Forms]![PDIngresoCantosAdicionalesxOP]![Tapacanto] & ", " & [Forms]![PDIngresoCantosAdicionalesxOP]![QCantos] & ", '" & [Forms]![PDIngresoCantosAdicionalesxOP]![LoteNo] & "', '" & [Forms]![PDIngresoCantosAdicionalesxOP]![TipoSolicitud] & "', " & [Forms]![PDIngresoCantosAdicionalesxOP]![IdMotivoAD] & ", " & [Forms]![PDDatosMueblesDespiece]![IdActadeVanos] & " strusuario"
dbs.Execute (str)
Forms!PDDatosMueblesDespiece!PDCantosporOrdendeProducción.Form.Requery

End Sub

Gracias

Lo que intentas escribir es strusuario y no el valor de strusuario

Debería ser, a partir del último &:

& "', " & strusuario & "')"

Una cosa: ¿Si no pones lo del strusuario te funciona?. Lo digo porque la sintaxis de Insert lleva la cláusula VALUES y no se si así te funcionará. Realmente, cada uno tiene sus manías, yo no suelo usar subconsultas, no me gusta. Te lo digo también porque yo he puesto un paréntesis al final de la sentencia. Si te funciona con la subconsulta no pongas el paréntesis.

Tomas, muchas gracias, si me funciono quitando el ")", gracias, tengo unas dudas respecto a otro código, pero lo voy a preparar bien y te lo envío haber si me haces el favor de sacarme de una duda.

Nuevamente muchas gracias.

Ok

No hay problema. Ya me avisarás.

Tomas, necesito otro favor tuyo, tengo un archivo System.mdw que maneja la seguridad de usuarios en access 2010, tengo entendido que en este access ya no se puede crear un nuevo System, pero quiero saber si el que tengo lo puede modificar agregando nuevos grupos de trabajo. o si hay otra forma de manejar la seguridad en la base de datos 2010 dando contraseña a cada usuario, pero que me tome el usuario activo y lo registre cuando creen alguna información nueva.

gracias.

En primer lugar perdona por tardar tanto en responder, no estaba "operativo" estos días. Cosas de médicos, nada grave, pero no he podido ni leer los mensajes.

Con este tema me has pillado, no lo se. Miré algo de seguridad hace algunas versiones de Access, pero es cierto que no es mi fuerte.

Lo cierto es que todo lo que he desarrollado, o ha sido pequeño, y no ha hecho falta incluir tanta seguridad, o ha sido grande y no he usado Access como base de datos, con lo que he implementado la seguridad con el servidor correspondiente (Linux+MySQL)

No puedo ayudarte en este punto.

Sorry

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas