** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Función personal en consulta
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Función personal en consulta

 Responder Responder
Autor
Mensaje
JOchoa Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 02/Febrero/2019
Localización: Colombia
Estado: Sin conexión
Puntos: 37
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita JOchoa Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Función personal en consulta
    Enviado: 14/Mayo/2020 a las 23:06
Buenas tardes Maestros.
Mi duda es la siguiente:
Tengo en una herramienta de registro de calificaciones una función para el cálculo del promedio de tres notas:

Public Function PromedioNotas(Nota1P, Nota2P, Nota3P)
    If (Abs(IsNumeric(Nota1P)) + Abs(IsNumeric(Nota2P)) + Abs(IsNumeric(Nota3P))) = 0 Then
        PromedioNotas = Null
    Else
        PromedioNotas = Round((Nz(Nota1P, 0) + Nz(Nota2P, 0) + Nz(Nota3P, 0)) / (Abs(IsNumeric(Nota1P)) + Abs(IsNumeric(Nota2P)) + Abs(IsNumeric(Nota3P))), 4)
    End If
End Function

He creado una consulta de totales para el calculo del promedio de las tres calificaciones en donde incluyo dicha función en un campo calculado agrupado por estudiante : (esta consulta es base para varios reportes)

PromedioCalificaciones: Promedio(PromedioNotas([Nota1P];[Nota2P];[Nota3P]))

Aunque el cálculo lo hace bien noto que la consulta se demora en ejecutarse mas de 20 segundos pero si quito el campo calculado sólo demora fracciones de segundo.

Intenté quitar este campo calculado de la consulta y en lugar de él poner un campo calculado (independiente) en el reporte pero el problema que se me presenta es que como el promedio es un campo calculado independiente pues no podría hacer ordenamientos por este campo.

¿Qué estoy haciendo mal?  

Muchas gracias por su apoyo!

un abrazo desde Colombia

Jochoa
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5596
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita mounir Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Mayo/2020 a las 10:36
Hola!

No me queda claro lo que pretendes!
Cuantos promedios quieres hacer?. La función en sí te lo hace, entonces por qué vuelves a hacerlo?. Además no hace falta crear ninguna función para tal fin ya que en consulta agrupada ya te lo calcula sin problemas.
Un Saludo.
Arriba
JOchoa Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 02/Febrero/2019
Localización: Colombia
Estado: Sin conexión
Puntos: 37
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita JOchoa Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 15/Mayo/2020 a las 13:42
Maestro Mounir, gracias por responder.

Creo que me faltó ser mas claro en mi consulta y trataré de serlo esta vez: El promedio de las notas que deseo calcular es un promedio entre tres campos diferentes de una tabla y no de datos en el mismo campo. Por eso es que utilizo la función personal PromedioNotas. Pero, adicional, debo calcular el promedio de ese promedioNotas y para eso si uso la agrupación por promedio de la consulta. Como puede ver, el uso de la función personal es debido a que no siempre están los tres datos de cada estudiante, es decir, a veces el promedio se debe calcular para una nota o para dos notas  o para tres notas.
Espero haberme hecho entender un poco mejor. Quedo atento a sus comentarios

un abrazo!

Jochoa
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable