¿Puedo dividir un gasto en varios automáticamente?

Tengo dos tablas relacionadas entre si. Por un lado tblGastos (IdGasto, Concepto, Total, Tienda) y por otro tblTienda (IdTienda, Nombre, Estado) donde tengo varias tiendas.

Lo que querría es que si meto un gasto, me lo divida entre las tiendas que tengan el estado = 1. Lo que se me ocurre sería ejecutar una cláusula insert to para cada tienda pero no tengo ni idea de como hacerlo. La cláusula creo que podría sacarla pero no sé como ejecutarla para cada tienda.

2 Respuestas

Respuesta
2

No se desde donde determinas el gasto, así que... Es muy sencillo. Si tengo la tabla Gastos, como dices

Y la tabla Tiendas

Como te decía, no se de donde sale el gasto y el concepto, así que si tengo un formulario

Al pulsar el botón, me deja la tabla como

El código del botón es

Private Sub Repartir_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into gastos(tienda) select nombre from tiendas where estado=1"
DoCmd.RunSQL "update gastos set concepto='" & Me.Concepto & "',total=cantidad/dcount(""*"",""tiendas"",""estado=1"") where concepto is null"
End Sub
Respuesta
1

¿Qué representa el campo Tienda en la tabla tblGastos?

Hola Eduardo, el campo Tienda es un campo numérico único para cada tienda.

He probado con un recordset y casi lo tengo, solo me falta quitarle el campo tienda del recordset y meterlo en la cláusula insert into, ¿sabrías como hacerlo?. Estoy usando este código

Dim TiendasActivas As Integer
TiendasActivas = DCount("IdTienda", "TblTienda", "Estado = 1")
MsgBox ("TIENDAS ACTIVAS: " & TiendasActivas)
Dim numGasto As String
Me.SubTotal = Round(SubTotal / TiendasActivas, 2)
Me.ImpIVA = Round(ImpIVA / TiendasActivas, 2)
Me.Total = Round(Total / TiendasActivas, 2)
DoCmd.RunCommand acCmdSaveRecord
numGasto = Nz(DMax("[IdGasto]", "tblGastos"), 0) + 1
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("conTiendasActivas")
Do Until rst.EOF
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO tblGastos (IdGasto, Fecha, Concepto, Categoría, SubTotal, ImpIva, Iva, Total, Tienda) SELECT " & numGasto & ", Fecha, Concepto, Categoría, subtotal, ImpIVA, Iva, Total, ?????? FROM tblGastos WHERE tblGastos.IdGasto=" & Me.IdGasto
numGasto = numGasto + 1
rst.MoveNext
Loop
rst.Close

Si quiere envíeme la base de datos con datos ficticios para no improvisar a [email protected], favor en el asunto anotar la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas