Sentencia SQL en Access VBA Error 3061

Tengo la siguiente sentencia dentro de un bucle para que el recordset me de el último registro de unos productos filtrados

Dim Rst3 As DAO.Recordset

Dim variable As String

variable = Rst1!IdMedicamento

Set Rst3 = CurrentDb.OpenRecordset("SELECT TOP 1 * FROM tbl_AlmacenIngreso WHERE IdMedicamentos=" & variable & " ORDER BY Id DESC")

También he intentado poniendo la variable Rst1! IdMedicamento directamente en la sentencia pero nada.

Me indica que "Se ha producido el error 3061 en tiempo de ejecución. Pocos parámetros. Se esperaba 2.

Mi motor de base de datos es MySQL

Soy nuevo en programación por favor, alguien que me pueda indicar cómo se usa correctamente las comillas en estas sentencias, ya que me raya por completo.

1 Respuesta

Respuesta
2

Tienes dos errores:

1º/ si IDMedicamento es de texto, su valor debe ir entre comillas simples.

2º/ Si no tienes un campo que se llame Id, no te puede ordenar por ese campo

Set Rst3 = CurrentDb.OpenRecordset("SELECT TOP 1 * FROM tbl_AlmacenIngreso WHERE IdMedicamentos='" & Rst1!IdMedicamento & "' ORDER BY IdMedicamentos DESC")

El recordset de la tbla_Almacen Ingreso tiene un campo llamado Id que es la llave autonumérica que necesito se ordene por ese criterio.  Aún continúa con error, indica "Se ha producido el error '3061' en tiempo de ejecución: Pocos parámetros.  Se esperaba 1."

La SQL está bien construída así, entonces:

Set Rst3 = CurrentDb.OpenRecordset("SELECT TOP 1 * FROM tbl_AlmacenIngreso WHERE IdMedicamentos='" & Rst1!IdMedicamento & "' ORDER BY Id DESC")

El error de pocos parámetros es:

1º/ o bien que has escrito un campo que no existe (en este caso la única opción es IdMedicamentos). Asegúrate que has escrito bien el nombre, y no sea, por ejemplo IdMedicamento, como el campo que traes del otro recordset

2º/ o no le pasas un valor al campo por el que filtra, o sea, que Rst1! IdMedicamento no tiene ningún valor. Comprueba que efectivamente lo tiene, por ejemplo con:

MSgBox Rst1!IdMedicamento

Antes de cargar el Rst3.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas