¿Cómo calcular comisiones por pedidos access?

Tengo dos tablas:

Pedidos
Detalle de pedidos
Quisiera poder poner comisiones para distintos vendedores en un mismo pedido. Hoy tengo para un solo vendedor. Se calcula en la tabla detalle de pedidos.
Detalle de pedidos: ID. ID de pedido. Código de producto. Precio. Vendedor. Comisión vendedor USD. Cliente. Comisión cliente USD. Las comisiones se calculan por fórmulas en VBA.

Luego se calculan los totales de todos los items y finalmente en una consulta aparecen los pedidos con sus montos:
Id. Total precio. Vendedor. Total comisión vendedor USD. Cliente. Total comisión cliente USD.
Luego en un informe, listo todos los vendedores y sus respectivas comisiones.
La pregunta es que quisiera agregar poder poner 3 vendedores más opcionales para poder poner. Se me ocurre poner en la tabla "Detalle de pedidos" los campos: Vendedor 2. Comisión vendedor 2 USD. Vendedor 3. Comisión Vendedor 3 USD. Vendedor 4. Comisión vendedor 4 usd.

La cuestión es: Como hago para listar luego en el informe "Comisiones de vendedor" un vendedor debajo del otro. Es decir porque están todos en un mismo registro los 4. Y yo necesito que si hay vendedores aparezcan en el informe uno de bajo del otro:
Campo Vendedor. Campo Monto sumado.
Pepito... 180 USD
Jorge... 150 USD
Carlos... 70 USD
Es decir antes en el informe seleccionaba el campo Vendedor (Porque era el único que había), ahora tengo 4 campos vendedor. ¿Cómo nombro los 4 en uno para que aparezcan uno de bajo del otro?

2 respuestas

Respuesta
1

Sebastián: La estructura dependerá de lo que busques.

En tu propuesta puedes poner N Vendedores "Por línea de Pedido" y lógicamente necesitarás un Campo por vendedor.

En mi opinión sería más práctico una Tabla aparte que se podría llamar >>

ComisPedVendedor

Campos IdPedido, IdVendedor, IptePedido, PctComisVend, IpteComision.

Asu vez si cada vendedor tiene un porcentaje, pues una tablita auxiliar que tenga IdVend, PctComis.

Después vendría >> Consulta, Informe etc. Mis saludos >> Jacinto

Es buena esa también!

Pero una consulta, si uso la primer opción. ¿Cómo hago para sacar la consulta y que aparezca uno debajo del otro? (Aunque estén los 3 vendedores en un mismo registro).

Necesito que de todos mis pedidos, tenga uno o dos vendedores por pedido, aparezcan uno debajo del otro en una consulta.

¿Se entiende?

Sebastián lo único que se me ocurre es que hagas pruebas con una consulta de Referencias cruzadas, pero a partir de aquí, solo tu conoces tu BD y la estructura de la misma.

Mis saludos >> Jacinto

Es decir, lo hago mas sencillo. Si tuviera una tabla que dice asi:
ID. Vendedor 1. Comision monto vendedor 1. Vendedor 3. Comision monto vendedor 2.
23. Juan. 100 USD. Pedro. 150 USD.
Y necesito que en un informe de vendedores se liste asi:
Juan... 100 USD
Pedro... 150 USD
Esa es mi idea. Se entiende? 

Sebastián : Vamos a ver si avanzamos un poco.

Vamos a Partir de una Tabla tal como te muestro >> TblComisiones

Create una Tabla Nueva Ejemplo TblComisVend, con "Tres Campos" >> IdPedido, Vendedor y Comision.

La guardas y pegas el Código siguiente en un Botón o donde tu prefieras:

Private Sub BtnComisiones_Click()
Dim QryComis As String, QryComisVend As String
Dim RstComis As DAO.Recordset, RstComisVend As DAO.Recordset
'Primero Recordset de Lectura
QryComis = "SELECT * FROM TblComisiones;"
Set RstComis = CurrentDb.OpenRecordset(QryComis, dbOpenSnapshot)
'Se da por sentado que el Recordset tiene registros
RstComis.MoveLast
RstComis.MoveFirst
'Segundo Recordset de Escritura
QryComisVend = "SELECT * FROM TblComisVend"
Set RstComisVend = CurrentDb.OpenRecordset(QryComisVend, dbOpenDynaset)
Do While Not RstComis.EOF
        If Not IsNull(RstComis!Vend1) Then
                RstComisVend.AddNew
                        RstComisVend!IdPedido = RstComis!IdPedido
                        RstComisVend!Vendedor = RstComis!Vend1
                        RstComisVend!Comision = RstComis!ComV1
                RstComisVend.Update
        End If
        If Not IsNull(RstComis!Vend2) Then
                RstComisVend.AddNew
                        RstComisVend!IdPedido = RstComis!IdPedido
                        RstComisVend!Vendedor = RstComis!Vend2
                        RstComisVend!Comision = RstComis!ComV2
                RstComisVend.Update
        End If
        If Not IsNull(RstComis!Vend3) Then
                RstComisVend.AddNew
                        RstComisVend!IdPedido = RstComis!IdPedido
                        RstComisVend!Vendedor = RstComis!Vend3
                        RstComisVend!Comision = RstComis!ComV3
                RstComisVend.Update
        End If
        RstComis.MoveNext
        DoEvents
Loop
RstComis.Close
Set RstComis = Nothing
RstComisVend.Close
Set RstComisVend = Nothing
End Sub

El resultado que vas a Obtener es:

Que dicho sea de paso, ni lo he repasado, pero supongo que está bien.

Mis saludos >> Jacinto

Lo voy a chequear y te comento! Gracias por la ayuda!

Y por medio de una consulta access, ¿no se podrá no? Así es más sencillo!

Sebastián: Si hay alguna forma de hacerlo con consultas la Ignoro.

Mis saludos >> Jacinto

Respuesta
1

Otra forma, un poco más "simple", sería añadir un campo "Comision" a tu tabla de vendedores, donde registras la comisión que llevará cada vendedor.

Luego para calcularla, sólo tienes que consultar la tabla (con un DLookUp() con el ID del vendedor, por medio de las relaciones entre las tablas...) para saber la comisión y hacer los cálculos.

Es que la comisión varia por Pedido, aunque sea un mismo vendedor. Luego necesito también que quede grabada en el pedido, por si en algún momento aumenta, no afecte a como figuran los pedidos viejos, los porcentajes de comisión que teniA el vendedor en ese pedido y su resultado de Monto por esa orden

Entonces la propuesta de Jacinto es la mejor opción.

Lo que más necesito es poder poner varios vendedores en un mismo pedido. Pero al sacar la consulta que salga uno de debajo del otro. Que hasta ahora era sencillo porque tenia un Solo campo vendedor y monto vendedor por registro. Ahora tendría 2 campos en un mismo registro por lo menos. Al llamar la consulta no se como llamar a los dos uno debajo de otro.

Es decir, lo hago más sencillo. Si tuviera una tabla que dice así:
ID. Vendedor 1. Comisión monto vendedor 1. Vendedor 3. Comisión monto vendedor 2.
23. Juan. 100 USD. Pedro. 150 USD.
Y necesito que en un informe de vendedores se liste así:
Juan... 100 USD
Pedro... 150 USD
Esa es mi idea. ¿Se entiende?

Prueba con las opciones de agrupar en el informe, o usa subinformes para mostrar los datos de las comisiones y/o vendedores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas