Asignar valor de consulta a variable en vba

Me estoy rompiendo la cabeza con el siguiente problema:

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT codprod FROM facttemp WHERE codprod = " & producto)
If rst.RecordCount > 0 Then
rst.MoveFirst
rst.Delete
End If
Rst. Close

Tengo este código en una parte de mi aplicación y funciona bien, pero al colocarlo en otro lado de la aplicación me dice que hay un error de sintaxis.

Lo que básicamente necesito es ir al último registro de una tabla y sumarle 1 al campo para asignarlo a una variable. Ya se que el código que muestro no hace eso, pero igual se me presentó el problema.

El código que tengo es:

set rst = currentdb.openrecordset("SELECT Last(FACTURA1.NUMFAC) AS ÚltimoDeNUMFAC FROM FACTURA1")

Pero tampoco funciona.

¿Qué tengo mal?

1 Respuesta

Respuesta
1

¿El error te lo da en la creación del recordset que pones al final?

En principio la estructura de la SQL parece estar bien.

¿Por qué no pruebas a crear el recordset sobre toda la tabla y moverte al último registro?

Set rst=CurrentDb.OpenRecordset("SELECT * FROM FACTURA1 ORDER BY NUMFACT")

Rst. MoveLast

Luego para coger el último NUMFACT: y sumarle 1, si tu variable se llama vUltimo

Dim vUltimo as Variant

vUltimo=rst("NUMFACT") + 1

Si no quieres usar un recordset, también puedes usar la función DLast("NombreCampo","NombreTabla")

Hola, hice lo que me explicas, pero sigue saliendo el error: Pocos parámetros, se esperaba 1 en la instrucción del set.

Gracias.

¿FACTURA1 es una tabla o una consulta con un parámetro, como se deduce del mensaje de error?

Y otra: ¿Probaste con la función? Seria algo así:

Dim vUltimo as Variant
vUltimo=DLast("NUMFAC","FACTURA1")

Pero si FACTURA1 es una consulta parametrizada, te va a pedir que metas el parámetro mediante un cuadro de access...

Hola, factura1 si es una tabla. Con la función DLast si funciona, pero lo que me causa algo de extrañeza es que la instrucción sql no se ejecute como debe ser.

Gracias.

Acabado de caer en una cosa:

Fíjate que la SQL que te proponía yo es:

"SELECT * FROM FACTURA1 ORDER BY NUMFACT"

Y debería ser:

"SELECT * FROM FACTURA1 ORDER BY NUMFAC"

(Fallo mío, que siempre abrevio factura a fact...)

Si la copiaste tal cual yo la puse, por eso te da el error de que falta un parámetro.

Si no es por eso, y sin ver tu BD, no se me ocurre nada que lo explique. Pero si con el DLast te funciona, pues no le des más vueltas, je je.

Ok, bueno yo si la tengo bien, caí en cuenta del error pero bueno, ya paré de darle vueltas al asunto y trataré de olvidarlo y que ojalá no me lo vuelva a encontrar.

Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas