Access: Dudas en el uso de Recordset
He preparado el siguiente código, mi intención es crear un Recordset para calcular las entradas de stock, a partir de la tabla Articulos_Compra y un Recorset para calcular las salidas de stock a partir de la tabla Articulos_Venta.
A partir de estos dos recorset, quiero ejecutar una consulta de datos anexados para insertar los valores en la tabla Articulos_Compra.
El código es:
If Me![Tipo_Albaran] = "Inventario" Then Fecha_Ultimo_Inventario = Nz(DMax("Fecha", "Albaranes_compras"), 0) Fecha_Actual = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Fecha] Var_Año_Albaran = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Año] Var_Serie_Albaran = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Serie_Albaran] Var_Id_Albaran = Forms![Formulario Control Stock]![Subformulario Traspaso_Almacenes].Form![Id_Albaran] Dim Respuesta As String Respuesta = MsgBox("¿Deseas añadir los artículos con stock actual?", 36, "Atención") If Respuesta = vbYes Then Set Base_Actual = CurrentDb With Base_Actual Set Salidas_Stock = .CreateQueryDef("", "SELECT Articulos_Venta.[Referencia Articulo], Sum(Articulos_Venta.Cantidad) AS SumaDeCantidad FROM Albaranes_Ventas LEFT JOIN Articulos_Venta ON (Albaranes_Ventas.Año = Articulos_Venta.[Año Albaran]) AND (Albaranes_Ventas.Serie_Albaran = Articulos_Venta.SerieAlbaran) AND (Albaranes_Ventas.Id_Albaran = Articulos_Venta.NumeroAlbaran) WHERE (((Albaranes_Ventas.Fecha) Between #" & Fecha_Ultimo_Inventario & "# And #" & Fecha_Actual & "#)) GROUP BY Articulos_Venta.[Referencia Articulo] ORDER BY Articulos_Venta.[Referencia Articulo], Sum(Articulos_Venta.Cantidad);") Set Salidas_Stock_1 = Salidas_Stock.OpenRecordset Set Entradas_Stock = .CreateQueryDef("", "SELECT Articulos_Compra.[Referencia Articulo], Sum(Articulos_Compra.Cantidad) AS SumaDeCantidad FROM Albaranes_Compras LEFT JOIN Articulos_Compra ON (Albaranes_Compras.Año = Articulos_Compra.[Año Albaran]) AND (Albaranes_Compras.Serie_Albaran = Articulos_Compra.SerieAlbaran) AND (Albaranes_Compras.Id_Albaran = Articulos_Compra.NumeroAlbaran) WHERE (((Albaranes_Compras.Fecha) Between #" & Fecha_Ultimo_Inventario & "# And #" & Fecha_Actual & "#)) GROUP BY Articulos_Compra.[Referencia Articulo];") Set Entradas_Stock_1 = Entradas_Stock.OpenRecordset End With DoCmd.SetWarnings False 'Desactiva el mensaje de ACCESS de que se van a agregar registros DoCmd.RunSQL "INSERT INTO Articulos_Compra ( [Referencia Articulo], Cantidad, [Precio Compra], [Total Articulo], [Año Albaran], SerieAlbaran, NumeroAlbaran ) SELECT Articulos.Referencia, Nz([Entradas_Stock_1].[SumaDeCantidad])-Nz([Salidas_Stock_1].[SumaDeCantidad]) AS Stock, Nz([Precio_Ultima_Compra]) AS Precio_Compra, Round([Stock]*[Precio_Ultima_Compra],2) AS Total, '" & Var_Año_Albaran & "' AS Año, '" & Var_Serie_Albaran & "' AS Serie, " & Var_Id_Albaran & " AS Albaran FROM (Articulos LEFT JOIN [Entradas_Stock_1] ON Articulos.Referencia = [Entradas_Stock_1].[Referencia Articulo]) LEFT JOIN [Salidas_Stock_1] ON Articulos.Referencia = [Salidas_Stock_1].[Referencia Articulo];" DoCmd.SetWarnings True 'Vuelve a activar los mensajes Me![Subformulario_Articulos_Traspaso].Form.Recalc Else End If Else End If
Pero me da error al intentar anexar los datos, error 3078, no se puede encontrar la tabla o consulta "Entradas_Stock_1".
Me da la sensación que al crear la consulta de datos anexados no reconoce los recordset como una consulta, de ahí el error.
¿Me podeís echar una mano?
1 Respuesta
Respuesta de Sveinbjorn El Rojo
1