Access - Campos calculados en formularios

 
Vista:
sin imagen de perfil

Campos calculados en formularios

Publicado por jose (2 intervenciones) el 29/01/2023 12:14:42
Buenas, soy novato en access y estoy haciendo una base de datos de registros de operaciones bursatiles, tengo 5 tablas:
- Operativa
- OperacionCompra
- OperacionVenta
- Stops
- Comisiones

La relación de las tablas es la siguiente: Operativa tiene una relacion de 1 a muchos con OperacionCompra, OperacionVenta y Stops, y la tabla Comisiones tiene tambien una relacion 1 a muchos con OperacionCompra, OperacionVenta y Stops. Pienso que las relaciones están bien, si estan mal decidmelo.

Tengo un formulario principal, Operativa, que tendria 3 subformularios, un subformulario para compras, otro para ventas y otro para stops.Aqui es donde tengo los problemas, ya que en estos subformularios tengo que realizar calculos y no se como hacer esto. Por ejemplo, para el subformulario de Compras si hago una de compra de 1000 acciones a 1€ el importe de la operacion es 1000€, sobre este importe me tendria que calcular la comision usando campos de la tabla comision.
Quedaría asi.

form

En el campo que uso para calcular la comision me aparece #¿Nombre?, he visto por internet que dicen que la solucion a esto es porque hay que cambiar el nombre del cuadro de texto para que no coincida con el nombre dell campo de la tabla pero lo he cambiado y sigue sin funcionarme.

No se si tengo que hacer una consulta y crear posteriormente el subformulario, tambien lo he intentado y tampoco he conseguido que me salga. A ver si me podeis echar una mano, saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eduardo

Campos calculados en formularios

Publicado por Eduardo (317 intervenciones) el 29/01/2023 15:02:38
Lo mejor es hacer el cálculo con una función a nivel de módulo.

Adicione esta función en un módulo;

1
2
3
4
5
6
7
8
9
10
11
Function vrcomision(lnidcomision As Long, dbimportecomision As Double) As Double
 
  Dim fcomision As Double
 
 
  'Busco el factor de la comisión
 
 fcomision = DLookup("factor", "Comisiones", "idComision=" & lnidcomision)
 vrcomision = fcomision * dbimportecomision
 
End Function

En el campo "ComisionC" en propiedades del formulario pestaña "Datos", "Valor predeterminado" llame la función así:

1
=vrcomision([idcomision];[ImporteComision])

Ahora, igualmente puede llamar la función en el evento "Después de actualizar" del campo "PrecioCompraR", en este caso primero determine el valor "ImporteComision" y después llame la función, algo como:

1
Me.ComisionC=vrcomision([idcomision],[ImporteComision])

Observe que en este caso la función no lleva punto y coma ( ;) sino coma (,) No obstante en este caso SOBRA la función porque puede hacer el cálculo directamente.

Debe revisar y cambiar los valores de los campos porque en la imagen creo no están completos.

Esta es una idea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Campos calculados en formularios

Publicado por jose (2 intervenciones) el 29/01/2023 16:56:29
Gracias por responder Eduardo, ¿pero que estén las tablas relacionadas no ayuda a traer los datos? Es una solución compleja traer datos de dos tablas ya relacionadas y hacer un cálculo, yo ya lo he dicho no se apenas nada de access pero lo veo una solución bastante complicada, supongo que habrá alguna más simple. Lo mismo no la hay, no se, a ver si alguien encuentra algo más simple, porque si encima quiero calcular totales por subformulario y estos totales sumarlos para luego restarlos en el formulario principal entonces la cosa se vuelve bastante complicada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Campos calculados en formularios

Publicado por Anonimo (3316 intervenciones) el 29/01/2023 18:01:13
Si el contenido del cuadro de texto 'ComisionO???...' es un calculo, su nombre es irrelevante para obtener el dato.

Se tendrá que obtener el valor del porcentaje adecuado en la tabla 'comisiones' (la función de dominio Dlookup puede ser adecuada) y en base a ella se efectuará el calculo, podría ser algo así como origen de datos del cuadro de texto:

1
= Dlookup("[campo con el valor]"; "comisiones"; "[si la hay: una condición a cumplir]") * [ImporteOeracion]

Lo anterior es una idea, lo de necesitar el nombre del campo solo tendría sentido si el campo formase parte del origen de datos del formulario (y si el formulario tiene un origen de datos).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Campos calculados en formularios

Publicado por Norberto (80 intervenciones) el 30/01/2023 09:42:15
Hola:

Debes de crear una consulta que junte la tabla de operaciones de compra con la tabla de comisiones y esa será la que muestres en el subformulario. De esta manera podrás hacer cálculos entre los campos ImporteOperación y Comisión.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar