¿Cómo envío un parámetro previamente calculado en una consulta de actualización?

Tengo una base de datos en la que recojo pedidos, con un precio y una cantidad. Sobre este pedido tengo unos gastos de envío que quiero repartir entre todos los productos. Lo único que me falta es pasarle el valor que he calculado a la consulta.

En el argumento de misql tengo el parámetro [gasto], ese sería el valor que quiero que coja automáticamente ya que lo he calculado antes. ¿Cómo tendría que ser el código? Muchas Gracias.

Private Sub Comando104_Click()

'CALCULO LA SUMA DE LOS PRODUCTOS

Dim cadenasql As String

Dim RScadenasql As Recordset
Dim DB As Dao.Database
Dim valorsql As Double
Dim numFactura As String
Set DB = CurrentDb
cadenasql = "SELECT tblIngresoProducto.Ingreso, Sum([Cantidad]*[PCoste]) AS Importe FROM tblIngresoProducto GROUP BY tblIngresoProducto.Ingreso"
Set RScadenasql = DB.OpenRecordset(cadenasql)
valorsql = RScadenasql!Importe

'CALCULO EL VALOR CON EL QUE OPERAR

Dim Gasto As Double
Gasto = Me.GastosEnvio / valorsql

'EJECUTO LA CONSULTA

miSQL = "UPDATE tblIngreso INNER JOIN tblIngresoProducto ON tblIngreso.IdIngreso = tblIngresoProducto.Ingreso SET tblIngresoProducto.PCoste = ([Gasto] *([PCoste]*[Cantidad])+([PCoste]*[Cantidad]))/[Cantidad], tblIngreso.AGastos = True WHERE (((tblIngreso.AGastos)=False) AND ((tblIngreso.IdIngreso)=[Formularios]![formIngreso]![IdIngreso]))"
DoCmd.RunSQL miSQL

End Sub

2 respuestas

Respuesta
3

Por si te sirve. Si tengo un formulario

Y tengo un cuadro de texto donde pongo o calculo los gastos varios que quiero dividir entre los productos(mira el subtotal) y pulso el botón Repartir

Es decir, divide los gastos entre los productos vendidos y se lo suma al subtotal. El código del botón es

El campo Idventa es el que relaciona formulario con el subformulario.

Sí, me ha válido era lo que buscaba pero ahora me da error de sintaxis (coma) en la expresión de consulta. Me da cuando el valor que le introduzco es decimal. He probado cambiando los tipos de datos a doble, long o single pero nada. ¿Alguna idea? Muchas gracias por ayudarme.

Creo que el error está en que el valor que le paso es por ejemplo "0,15254" el SQL me da error. ¿como puedo cambiar la "coma" por un ".", para que el valor a operar sea por ejemplo "0.1524"?

Ya está! Lo he solucionado con un Replace. Para los que tengan el mismo problema les envío el código que he utilizado:

Dim cadenasql As String
Dim RScadenasql As Recordset
Dim DB As Dao.Database
Dim valorsql As Single
Dim numFactura As String
Set DB = CurrentDb
cadenasql = "SELECT tblIngresoProducto.Ingreso, Sum([Cantidad]*[PCoste]) AS Importe FROM tblIngresoProducto GROUP BY tblIngresoProducto.Ingreso"
Set RScadenasql = DB.OpenRecordset(cadenasql)
valorsql = RScadenasql!Importe

Dim Gasto As Single
Gasto = Me.GastosEnvio / valorsql

Dim Gasto2 As Variant

Gasto2 = Replace(Gasto, ",", ".")

miSQL = "UPDATE tblIngreso INNER JOIN tblIngresoProducto ON tblIngreso.IdIngreso = tblIngresoProducto.Ingreso SET tblIngresoProducto.PCoste = (" & Gasto2 & "*([PCoste]*[Cantidad])+([PCoste]*[Cantidad]))/[Cantidad] WHERE (((tblIngreso.IdIngreso)=[Formularios]![formIngreso]![IdIngreso]) AND ((tblIngresoProducto.APMedio)=False))"
DoCmd.RunSQL miSQL
DoCmd.RunCommand acCmdRefresh

End Sub

Efectivamente, en código VB no se usa la coma sino el punto

Respuesta
1

Pues así:

miSQL = "UPDATE tblIngreso INNER JOIN tblIngresoProducto ON tblIngreso.IdIngreso = tblIngresoProducto.Ingreso SET tblIngresoProducto.PCoste = (" & Gasto & "*([PCoste]*[Cantidad])+([PCoste]*[Cantidad]))/[Cantidad], tblIngreso.AGastos = True WHERE (((tblIngreso.AGastos)=False) AND ((tblIngreso.IdIngreso)=[Formularios]![formIngreso]![IdIngreso]))"

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas