Añadir registro a tabla desde VBA

Estoy intentando añadir un registro a una tabla mediante la pulsación de un botón en un formulario de access. Quiero que pregunte al usuario un valor fecha y un valor código de muestra mediante dos inputbox y a continuación, emplear esos valores en dos campos del nuevo registro en la tabla duplicados:

Private Sub Comando161_Click()
Dim FechaD As Date
Dim CodMD As String
FechaD = DateValue(InputBox("¿Fecha?"))
CodMD = InputBox("¿Codigo Muestra?")
DoCmd.RunSQL "INSERT INTO Duplicados (IdEnsayoParametro,Fecha,CodMuestra) values(3,""&FechaD&"",""&CodMD&"")"
End Sub

El problema que me encuentro es que al ejecutarse la consulta me da un error de conversión de tipos. Me añade bien el valor 3 en el campo idensayoparametro, me deja en blanco el de fecha y el codmuestra le asigna el valor"&codMD", en vez del valor introducido por el usuario en el inputbox.

En la tabla, los tipos de campo están correctos : fecha es tipo date y codmuestra es tipo string.

2
Respuesta
2

La sintaxis correcta para la Sql es:

DoCmd.RunSQL "INSERT INTO Duplicados (IdEnsayoParametro,Fecha,CodMuestra) values(3,#" & FechaD & "#,'" & CodMD & "')"

Y si tienes problemas con las fechas :

DoCmd.RunSQL "INSERT INTO Duplicados (IdEnsayoParametro,Fecha,CodMuestra) values(3,#" & Format (FechaD,"mm/dd/yyyy") & "#,'" & CodMD & "')"

¡Muchas Gracias! Me había hecho un buen lío con los &, los ' y los #...he debido de probar cuarenta combinaciones diferentes, con comillas dobles, simples..en fin. 

1 respuesta más de otro experto

Respuesta
2

Salva: Prueba así y te debe funcionar >>

CurrentDb.Execute "INSERT INTO Duplicados (IdEnsayoParametro, Fecha, CodMuestra) VALUES (3, " & "#" & Format(FechaD, "dd/mm/yyyy") & "#" & ", '" & CodMD & "')"

Un saludo >> Jacinto

¡Gracias Jacinto! También me funciona tu solución

Salva: Al repasar mi respuesta he visto que Sveinbjorn (un saludo), ya te había proporcionado una igual. Son cosas que pasan. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas