Error tipos definidos por usuarios en Access vba

Espero que se encuentren bien, quiero pedirles el favor de lo siguiente:

Estoy haciendo un código VBA en Access, que tiene como objeto restar el campo Cantidad_venta
de la tabla Productos_venta con el campo Cantidad_compra de la tabla Productos,
para ello el siguiente código VBA:

Dim db1, db2 As Database
Dim rs1, rs2 As Recordset
Dim var1, var2 As Double

Set db1 = CurrentDb
Set rs1 = db1.OpenRecordset("select * from Productos")
Set rs2 = db2.OpenRecordset("select * from Productos_venta")

Do While Not rs1.EOF
Do While Not rs2.EOF
var1 = rs1!Cantidad_compra
var2 = rs2!Cantidad_venta
rs1!Stock = var1 - var2
rs1.Update
rs2.Update
Loop
Loop
Pero al ejecutar el código Access me dice el siguiente error

Se espera un tipo definido por el usuario, no un proyecto.
Y el compilador me marca la línea de código en donde se define
la variable database:

Dim db1, db2 As Database

¿A qué se deberá el error siendo que ya he activado las referencias ADO y DAO?

2 respuestas

Respuesta
1

El error lo tienes, creo, en cómo defines las variables: al poner Dim db1, db2 As Database, estás definiendo la variable db1 commo Variant y la variable db2 como Database. Lo mismo se puede decir de las otras declaraciones que haces.

Prueba así:

Dim db1 As Database, db2 As Database
Dim rs1 As Recordset, rs2 As Recordset
Dim var1 As Double, var2 As Double

Y si aún no te va, prueba esta otra:

Dim db1 As DAO.Database, db2 As DAO.Database
Dim rs1 As DAO.Recordset, rs2 As DAO.Recordset
Dim var1 As Double, var2 As Double

Respuesta
1

A bote pronto para utilizar .update antes ha de ir .edit

Rs1. Edit
' Cambiar valores
rs1.Update

En el siguiente enlace tienes el metodo correcto.

 https://msdn.microsoft.com/en-us/library/office/ff821467.aspx 

También veo que no te mueves por los registros: rs1.MoveFirst ...

El siguiente ejemplo hace algo parecido a lo que buscas...

Ejemplo añadir cumpleaños de una tabla a otra.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas