Generador de expresiones con access
Tengo una tabla de access con campos numéricos. He creado un formulario para introducir los datos de esos tres campos numéricos, y un cuarto campo (formulario) donde quiero que me calcule el promedio de las tres anteriores. He intentado hacerlo mediante el generador de expresiones pero no lo consigo lo que hago es:
=Promedio[origen del control1];[origen del control2];[origen del control3])
Que es lo que estoy haciendo mal
=Promedio[origen del control1];[origen del control2];[origen del control3])
Que es lo que estoy haciendo mal
1 Respuesta
Respuesta de manuelpacha
1
1
manuelpacha, Trabajo de diseñador de bases de datos en entorno access con un...
La función promedio se usa para los pies de formularios donde calculamos el promedio de un campo en particular. En tu caso puedes creas un Cuadro de texto con la formula =([origen del control1]+[origen del control2]+[origen del control3])/3 o incluirlo en un campo de consulta.
Una aperta
Una aperta
Hola Manuel, para vexo que eres da terra.
Gracias por tu rápida respuesta. ¿Quieres decir que calcula, para esta fórmula, la media de todos los valores registrados hasta el momento en la base de datos, en el campo por ejemplo [origen de control 1]?.
Saúdos.
Gracias por tu rápida respuesta. ¿Quieres decir que calcula, para esta fórmula, la media de todos los valores registrados hasta el momento en la base de datos, en el campo por ejemplo [origen de control 1]?.
Saúdos.
Si incorporas en el pie de formulario un cuadro =promedio([origen del control1] y tienes 30 registros, sumará la cantidad de datos de dicho campo y la dividirá entre 30. A medida que aumentas los registros recalcula a la cantidad nueva.
Si lo incorporas en la linea de detalle con la fórmula =([origen del control1]+[origen del control2]+[origen del control3])/3, lo que te da es el promedio de esa línea
Una aperta
Si lo incorporas en la linea de detalle con la fórmula =([origen del control1]+[origen del control2]+[origen del control3])/3, lo que te da es el promedio de esa línea
Una aperta
Muy buena respuesta. Lo he entendido perfectamente. Pero como podría por ejemplo calcular el promedio de los valores de diferentes campos del mismo registro sin tener que crear la fórmula "tocho" por mi mismo. En el caso del promedio no hay mucho problema, la fórmula es fácil, pero a mi se me presenta el caso de tener que calcular el la desviación estándar de un conjunto de 20 valores del mismo registro pertenecientes a 20 campos. Y la verdad es que escribir la fórmula es bastante peñazo. ¿Sería posible hacerlo?.
Saúdos
Saúdos
A través de módulos de visual basic, se pueden crear funciones que no están diseñadas en access. Se podría crear un modulo con este contenido:
Function Media(n1 As Double, n2 As Double, n3 As Double)
Media = (n1 + n2 + n3) / 3
End Function
Lo guardamos con cualquier nombre y ya hemos creado una función que se denomina Media. Una vez creada vamos al formulario y en la zona detalle incorporamos un cuadro de texto independiente con el dato =media([campo1];[campo2];[campo3]).
Como ves se podrían crear las funciones que quieras, pero si van a ser fórmulas únicas de determinados formularios quizás no valga la pena. En informática se incorporan fórmulas kilométricas que el usuario no ve, pero como todos sabemos el cálculo lo hace el ordenador.
Una aperta.
Function Media(n1 As Double, n2 As Double, n3 As Double)
Media = (n1 + n2 + n3) / 3
End Function
Lo guardamos con cualquier nombre y ya hemos creado una función que se denomina Media. Una vez creada vamos al formulario y en la zona detalle incorporamos un cuadro de texto independiente con el dato =media([campo1];[campo2];[campo3]).
Como ves se podrían crear las funciones que quieras, pero si van a ser fórmulas únicas de determinados formularios quizás no valga la pena. En informática se incorporan fórmulas kilométricas que el usuario no ve, pero como todos sabemos el cálculo lo hace el ordenador.
Una aperta.
Creo que existe un camino B para solucionar lo que necesito, aunque no tengo claro si debo seguirlo. Consiste en crear en una hoja de Excel la celda con la fórmula que necesites, utilizando claro está las fórmulas existentes. Después vincular esa hoja a Access mediante ARCHIVO>OBTENER DATOS EXTERNOS>IMPORTAR. De esa forma Access crea una tabla vinculada con la hoja de Excel, y esa "tabla" puedes utilizarla en formularios.
Lo que no tengo claro es si el procedimiento es "fiable" a la hora de guardar la información en el futuro. En mi caso lo que pretendo hacer es una base de datos de calibración de equipos de medida, donde introduzca los valores de las mediciones; y mediante operaciones estadísticas y de comparación, pueda obtener la medida de incertidumbre del equipo. Esa operación tendré que hacerla todos los años para un gran número de equipos, y el resultado, que es un número, tendré que representarlo gráficamente mediante una gráfica de líneas horizontal que evidencia el estado de deterioro del equipo a lo largo del paso del tiempo. En la base de datos tendré que guardar además los datos técnicos de cada equipo, (rangos, proveedor, ubicación, ...).
Lo que no tengo claro es si el procedimiento es "fiable" a la hora de guardar la información en el futuro. En mi caso lo que pretendo hacer es una base de datos de calibración de equipos de medida, donde introduzca los valores de las mediciones; y mediante operaciones estadísticas y de comparación, pueda obtener la medida de incertidumbre del equipo. Esa operación tendré que hacerla todos los años para un gran número de equipos, y el resultado, que es un número, tendré que representarlo gráficamente mediante una gráfica de líneas horizontal que evidencia el estado de deterioro del equipo a lo largo del paso del tiempo. En la base de datos tendré que guardar además los datos técnicos de cada equipo, (rangos, proveedor, ubicación, ...).
En cuanto a lo de enlazar con excel, yo solo lo uso para exportar datos ya que los usuarios se mueven mejor en un entorno excel que en uno access. Las posibilidades del access son ilimitadas aunque podrías requerir conocimientos de programación en visual o SQL. Lo que entiendo en tus necesidades (y perdón por mi posible ignorancia de tu trabajo) es que realizas mediciones distintas de un mismo equipo, por lo que yo crearía una tabla de equipos, otra de tipos de mediciones y otra de mediciones:
tblEquipos.- IdEquipo (autonumérico, clave principal); NombreEquipo (texto);etc... Ejemplo:
1;Válvula 001
2;Termómetro 012
3;Compresor 999
TblTipoMediciones.- TipoMediciones (texto, clave principal); UnidadMedicion (texto)
Temperatura;Celsius
Presión;Atmósferas
Altura;Metros
tblMediciones.- IdMediciones (autonumérico, clave principal); IdEquipo; TipoMediciones; DatoMedicion (numerico double); FechaMedición; UsuarioMedicion; etc...
En esta tabla podríamos introducir varias mediciones del identificador de cada equipo, así del Termómetro 012 (identificador 2) crearíamos varios registros que quedarían así:
1; 2; Temperatura; 12; 01/06/2010; Usuario001; etc
2; 2; Temperatura; 22; 02/06/2010; Usuario001; etc
3; 2; Temperatura; 25; 03/06/2010; Usuario001; etc
4; 2; Temperatura; 23; 04/06/2010; Usuario001; etc
Así se podrían realizar consultas y operaciones en un solo campo filtrando por los tipos de medición que queramos.
Este tipo de estructura nos facilita la introducción de tipos nuevos de mediciones sin necesidad de variar el diseño de las tablas, ya que los agregaríamos en la TblTipoMediciones. No se si te puede servir para tu base. Una aperta.
tblEquipos.- IdEquipo (autonumérico, clave principal); NombreEquipo (texto);etc... Ejemplo:
1;Válvula 001
2;Termómetro 012
3;Compresor 999
TblTipoMediciones.- TipoMediciones (texto, clave principal); UnidadMedicion (texto)
Temperatura;Celsius
Presión;Atmósferas
Altura;Metros
tblMediciones.- IdMediciones (autonumérico, clave principal); IdEquipo; TipoMediciones; DatoMedicion (numerico double); FechaMedición; UsuarioMedicion; etc...
En esta tabla podríamos introducir varias mediciones del identificador de cada equipo, así del Termómetro 012 (identificador 2) crearíamos varios registros que quedarían así:
1; 2; Temperatura; 12; 01/06/2010; Usuario001; etc
2; 2; Temperatura; 22; 02/06/2010; Usuario001; etc
3; 2; Temperatura; 25; 03/06/2010; Usuario001; etc
4; 2; Temperatura; 23; 04/06/2010; Usuario001; etc
Así se podrían realizar consultas y operaciones en un solo campo filtrando por los tipos de medición que queramos.
Este tipo de estructura nos facilita la introducción de tipos nuevos de mediciones sin necesidad de variar el diseño de las tablas, ya que los agregaríamos en la TblTipoMediciones. No se si te puede servir para tu base. Una aperta.
Muy buena sugerencia. En mi caso lo que tengo que calibrar son instrumentos de medida de longitud (calibres, micrómetros, ...), para ello tengo que con cada uno de ellos obtener por ejemplo 5 medidas en diferentes rangos de medida (5 muestras de la medida 0 mm, 5 muestras en la medida 10 mm, y así hasta digamos 150 mm). De esas muestras tengo que calcular la media, y la desviación típica. Con esos valores tengo que operar un "chorizo" de fórmula para calcular la incertidumbre de cada rango de medición. En este " chorizo" de fórmula tengo que introducir el valor de la medida e incertidumbre del patrón que utilizo para tomar cada una de las medidas (bloques patrón). Y con el resultado de todas las incertidumbres de cada rango coger la mayor de ellas como incertidumbre del equipo.
Te adjunto la BD que tengo medio creada (fase primaria) para que veas mi necesidad.
Saludos
Te adjunto la BD que tengo medio creada (fase primaria) para que veas mi necesidad.
Saludos
Creo que la página no permite el adjutar ficheros ni poner dirección de correos, así que no sé como ayudarte más en este asunto.
Con la valiosa información que me has facilitado creo que ya tengo suficientes conocimientos para rebanarme por mi mismo los sesos. Me ha sido de gran ayuda saber hasta donde llegan las fórmulas del generador de expresiones. Estoy comenzando con Access y estoy muy mal acostumbrado con la facilidad y obviedad de Excel. Lo que si necesito es aprender visual basic para tratar de sacarle un poco más de jugo a estos programas.
Muchas gracias por tu valiosa ayuda.
Muchas gracias por tu valiosa ayuda.
- Compartir respuesta
- Anónimo
ahora mismo