¿Cuáles son las partes de una base de datos Access?

Expresiones en Access: Guía Completa

Valoración: 4.21 (3423 votos)

En el mundo de la gestión de bases de datos, especialmente al trabajar con Microsoft Access, las expresiones son herramientas fundamentales que te permiten ir más allá del simple almacenamiento de información. Son la clave para realizar cálculos dinámicos, tomar decisiones lógicas basadas en tus datos, validar entradas y personalizar la presentación de la información en formularios e informes.

Una expresión en Access es esencialmente una fórmula que combina diversos elementos para producir un resultado único. Piensa en ella como una instrucción que Access evalúa para obtener un valor específico en un momento dado. Estos elementos pueden ser tan variados como operadores matemáticos o lógicos, constantes (valores fijos), funciones predefinidas de Access, referencias a campos de tablas, controles en formularios o informes, y propiedades de estos objetos.

¿Cuáles son los criterios en el diseño de consultas?
Un criterio de consulta es una expresión que Access compara con los valores de un campo de consulta para determinar si se incluye el registro que contiene cada valor . Por ejemplo, = "Chicago" es una expresión que Access puede comparar con los valores de un campo de texto en una consulta.

Comprender y saber utilizar las expresiones te abre un abanico de posibilidades en Access, permitiéndote crear bases de datos más inteligentes, eficientes y adaptadas a tus necesidades. Ya sea que necesites calcular el precio total de un pedido con descuento, determinar la antigüedad de un registro, mostrar información condicionalmente o filtrar datos complejos, una expresión es la herramienta adecuada.

Índice de Contenido

¿Qué Componentes Forman una Expresión?

Como mencionamos, una expresión se construye a partir de diferentes bloques:

  • Operadores: Símbolos que realizan una operación. Pueden ser aritméticos (+, -, , /), de comparación (=, >, <, >=, <=, <>), lógicos (And, Or, Not) o de concatenación (&, +).
  • Constantes: Valores fijos que no cambian, como números (100), texto ("Total"), fechas (#12/31/2023#) o valores lógicos (True, False).
  • Funciones: Procedimientos predefinidos que realizan una tarea específica y devuelven un valor. Access tiene cientos de funciones para texto, números, fechas, finanzas, etc. Ejemplos incluyen Suma, Izquierda, Fecha.
  • Referencias a Campos, Controles y Propiedades: Punteros a los datos almacenados en campos de tablas ([NombreCampo]), a los valores mostrados en controles de formularios o informes ([NombreControl]), o a las propiedades de estos objetos.

Usos Prácticos de las Expresiones en Access

Las expresiones son increíblemente versátiles y se utilizan en diferentes partes de Access:

  • Controles Calculados: En formularios e informes para mostrar resultados que no están directamente en los datos de origen, como totales, porcentajes o valores combinados.
  • Campos Calculados: En consultas para crear nuevas columnas que derivan su valor de una expresión aplicada a otros campos.
  • Criterios: En consultas, filtros, o propiedades de formularios/informes para especificar qué registros se deben incluir o mostrar.
  • Reglas de Validación: Para asegurar que los datos introducidos cumplen ciertos requisitos.
  • Valores Predeterminados: Para establecer un valor inicial en un campo o control cuando se crea un nuevo registro.

Expresiones para Cálculos Aritméticos

El uso más básico de las expresiones es realizar operaciones matemáticas con valores numéricos o de fecha. Puedes sumar, restar, multiplicar y dividir campos o controles.

Por ejemplo, si tienes campos para la cantidad y el precio unitario de un producto, puedes calcular el precio extendido:

=[Cantidad] * [PrecioUnidad]

Para calcular el total de existencias sumando las unidades disponibles y las pedidas:

=[UnidadesEnExistencias] + [UnidadesEnPedido]

Incluso puedes aplicar un porcentaje, como un impuesto o margen:

=[Precio] * 1.06 (Para sumar un 6% al precio)

Al realizar operaciones aritméticas, es importante recordar la propagación de valores nulos. Si cualquier parte de una expresión aritmética es Nula (desconocida o sin definir), el resultado de toda la expresión será Nulo. Por ejemplo, si [Cantidad] es 10 pero [PrecioUnidad] es Nulo, el resultado de =[Cantidad] * [PrecioUnidad] será Nulo. Puedes usar la función Nz para manejar esto, convirtiendo los valores Nulos a cero u otro valor:

=Nz([Subtotal]) + Nz([Transporte]) (Suma Subtotal y Transporte, tratando los Nulos como cero)

Manejo de Fechas con Expresiones

Las expresiones también son potentes para trabajar con fechas. Puedes calcular la diferencia entre dos fechas para obtener el número de días, o sumar/restar días a una fecha.

Para encontrar la diferencia entre la fecha de envío y la fecha obligatoria:

=[FechaObligatoria] - [FechaDeEnvío] (Esto te dará el número de días de diferencia)

Para calcular una fecha dos días antes de la fecha obligatoria:

=[FechaObligatoria] - 2

Concatenación y Manipulación de Texto

Las expresiones te permiten combinar (concatenar) cadenas de texto de diferentes campos o agregar texto fijo. Los operadores más comunes para esto son &amp; y +. Aunque ambos combinan texto, el operador + soporta la propagación de nulos, mientras que &amp; no. Generalmente, &amp; es preferible para concatenación simple de texto.

Para crear un nombre completo combinando nombre y apellido:

=[Nombre] & " " & [Apellidos] (El " " agrega un espacio entre los nombres)

Para combinar ciudad, región y código postal:

=[Ciudad] & " " & [Región] & " " & [CódigoPostal]

Si usas +, la expresión se comportaría así:

=[Ciudad] & (" " + [Región]) & " " & [CódigoPostal] (Si [Región] es Nulo, (" " + [Región]) resulta en Nulo, y la expresión completa podría comportarse de forma inesperada dependiendo del contexto y otros valores Nulos. La versión con &amp; es más robusta para Nulos en este caso).

Access también ofrece funciones para manipular cadenas de texto, como extraer partes de una cadena o eliminar espacios.

=Izquierda([NombreDeProducto], 1) (Obtiene el primer carácter)

=Dcha([CódigoDeActivo], 2) (Obtiene los últimos dos caracteres)

=Medio([Teléfono], 2, 3) (Obtiene 3 caracteres a partir del segundo)

=Recortar([Dirección]) (Elimina espacios al principio y al final)

Cómo Referenciar Datos en Otros Objetos

A veces, necesitas que una expresión en un formulario o informe utilice datos que se encuentran en otro formulario, subformulario, informe o subinforme. Access te permite hacer esto referenciando la jerarquía de objetos.

Para obtener el valor de un control en otro informe:

=Informes![NombreDelInforme]![NombreDelControl]
Ejemplo: =Informes![Factura]![IdDePedido]

Para obtener el valor de un control en un subinforme:

=Informes![NombreDelInformePrincipal]![NombreDelControlSubinforme].[Informe]![NombreDelControlEnSubinforme]
Ejemplo: =Informes![InformeResumido]![SubinformeDeResumen].[Informe]![TotalDeVentas]

Para obtener el valor de un control en otro formulario:

=Formularios![NombreDelFormulario]![NombreDelControl]

Para obtener el valor de un control en un subformulario:

=Formularios![NombreDelFormularioPrincipal]![NombreDelControlSubformulario].[Formulario]![NombreDelControlEnSubformulario]
Ejemplo: =Formularios![Pedidos]![SubformularioDePedidos].[Formulario]![SubtotalDePedido]

También puedes referenciar columnas específicas en controles de varias columnas como cuadros de lista (la indexación empieza en 0):

=Formularios![Pedidos]![SubformularioDePedidos].[Formulario]![IdDeProducto].Column(2) (Obtiene el valor de la tercera columna del cuadro de lista IdDeProducto)

Funciones de Agregado

Las funciones de agregado se utilizan para realizar cálculos sobre un conjunto de valores, típicamente en el pie de un informe, el pie de un grupo o en una consulta de totales. Calculan un único valor a partir de múltiples filas.

Funciones comunes incluyen:

  • Suma(): Calcula la suma de valores.
  • Contar(): Cuenta el número de elementos (registros o valores no nulos).
  • Prom(): Calcula el promedio (media aritmética).
  • Min(): Encuentra el valor mínimo.
  • Max(): Encuentra el valor máximo.
  • DesvEst(): Calcula la desviación estándar.
  • Var(): Calcula la varianza.

Ejemplos de uso en pies de informe o grupo:

=Suma([Ventas]) (Suma todos los valores en el control Ventas)

=Contar([IdDePedido]) (Cuenta el número de pedidos)

=Prom([Transporte]) (Calcula el promedio de los gastos de transporte)

Puedes usar agregados con operaciones aritméticas. Por ejemplo, para mostrar el porcentaje de ventas de un artículo respecto al total:

=[Ventas] / Suma([Ventas]) (Si la propiedad Formato del control está en Porcentaje, no necesitas multiplicar por 100)

Funciones de Agregado de Dominio

A diferencia de las funciones de agregado estándar que operan sobre el conjunto de registros actual (por ejemplo, en un informe o una consulta de totales), las funciones de agregado de dominio operan sobre un "dominio" especificado. Un dominio puede ser una tabla, una consulta o incluso un formulario o informe. Esto te permite calcular valores sobre un conjunto de datos diferente al que estás viendo actualmente, o aplicar criterios específicos al cálculo.

Las funciones de dominio más comunes son:

  • DSuma(): Suma valores en un dominio.
  • DCont(): Cuenta registros en un dominio.
  • DProm(): Calcula el promedio en un dominio.
  • DBúsq() (DLookup): Busca el valor de un campo en un dominio que cumple ciertos criterios.
  • DMin(), DMax(), DDesvEst(), DVar(): Equivalentes de dominio para Min, Max, DesvEst y Var.

Sintaxis general: NombreFuncionDominio("Campo", "Dominio", "Criterios") (El argumento Criterios es opcional)

Ejemplos:

=DCont("Retirado", "Activos", "Retirado = Verdadero") (Cuenta cuántos activos tienen el campo Retirado (Sí/No) marcado como Verdadero en la tabla Activos)

=DSuma("ImporteDePedido", "Pedidos", "IdCliente = 'RATTC'") (Suma los importes de pedido para el cliente con Id 'RATTC' en la tabla Pedidos)

=DBúsq("NombreDeContacto", "Proveedores", "IdDeProveedor = " & [IdDeProveedor]) (Busca el nombre de contacto del proveedor cuyo Id coincide con el valor del control [IdDeProveedor] en el formulario actual)

Las funciones de dominio son especialmente útiles para mostrar información resumida de otras partes de la base de datos sin necesidad de crear consultas o subinformes complejos.

Manejo de Valores Nulos con Expresiones

Los valores Nulos representan datos desconocidos o no aplicables. Es crucial saber cómo manejarlos en tus expresiones para evitar errores o resultados inesperados.

La función EsNulo() (IsNull) verifica si un valor es Nulo y devuelve Verdadero o Falso. A menudo se usa junto con SiInm() (IIf).

La función SiInm() evalúa una condición y devuelve un valor si es verdadera y otro si es falsa. Sintaxis: SiInm(Condición, ValorSiVerdadero, ValorSiFalso)

Ejemplo: Mostrar un mensaje si falta una fecha, o la diferencia si ambas fechas existen:

=SiInm(EsNulo([FechaObligatoria] - [FechaDeEnvío]), "Comprobar si falta una fecha", [FechaObligatoria] - [FechaDeEnvío]) (Si la resta resulta en Nulo, muestra el mensaje; de lo contrario, muestra la diferencia)

Otro ejemplo: Mostrar solo ciudad y código postal si la región es Nula, o ciudad, región y código postal si la región existe:

=SiInm(EsNulo([Región]), [Ciudad] & " " & [CódigoPostal], [Ciudad] & " " & [Región] & " " & [CódigoPostal])

La función Nz() es útil para convertir valores Nulos en cero (para números) o una cadena vacía (para texto), evitando la propagación de nulos en cálculos:

=Nz([VentasPrimerTrimestre]) + Nz([VentasSegundoTrimestre]) (Suma las ventas, tratando los trimestres sin datos como cero)

Uso de Expresiones en Controles Calculados

Como se mencionó, puedes usar expresiones directamente en la propiedad "Origen del Control" de un cuadro de texto o una etiqueta en un formulario o informe para mostrar un valor calculado.

=Suma([Cantidad] * [Precio]) (En el pie de un grupo o informe para obtener el total del producto Cantidad * Precio)

Expresiones en Consultas y Criterios

Las expresiones son vitales en las consultas de Access. Puedes usarlas para crear campos calculados o para definir criterios que filtren los registros.

Campos Calculados en Consultas

En la cuadrícula de diseño de una consulta, en una columna vacía, puedes escribir un nombre para el nuevo campo seguido de dos puntos y luego la expresión. Por ejemplo, para crear un campo "NombreCompleto":

NombreCompleto: [Nombre] & " " & [Apellidos]

Para calcular el "PrecioTotal" con descuento:

PrecioTotal: CCur([Detalles del Pedido].[PrecioUnidad][Cantidad](1-[Descuento])/100)100 (Usa CCur para asegurar que el resultado sea monetario)

Para calcular el "TiempoDeEspera" entre dos fechas:

TiempoDeEspera: [FechaObligatoria] - [FechaDeEnvío]

Puedes usar funciones de agregado en campos calculados en consultas de totales. Primero, debes convertir la consulta a una consulta de totales (en la pestaña Diseño de consulta, haz clic en Totales). Luego, en la fila "Total" del campo calculado, selecciona "Expresión".

PorcentajeDeTransporte: Suma([Transporte])/Suma([Subtotal]) (Calcula el porcentaje de transporte sobre el subtotal total. Si el formato del campo en la hoja de datos es Porcentaje, no multipliques por 100)

Criterios de Consulta: Buscando Datos Específicos

Las expresiones en la fila "Criterios" de la cuadrícula de diseño de consulta limitan los registros que se muestran. Puedes usar operadores de comparación, lógicos, funciones y referencias.

Criterios para Valores de Texto

CampoExpresión (Criterios)Descripción
CiudadDeEnvío"London"Pedidos enviados exactamente a Londres.
CiudadDeEnvío"London" Or "Hedge End"Pedidos enviados a Londres o Hedge End.
PaísRegiónDeEnvíoIn("Canada", "UK")Pedidos enviados a Canadá o Reino Unido.
PaísRegiónDeEnvíoNot "USA"Pedidos enviados a cualquier país/región excepto EE. UU.
NombreEmpresa>="N"Pedidos a empresas cuyos nombres empiezan de la N a la Z.

Criterios para Buscar Datos que Faltan

CampoExpresión (Criterios)Descripción
RegiónDeEnvíoIs NullPedidos donde la región de envío es Nula.
RegiónDeEnvíoIs Not NullPedidos donde la región de envío NO es Nula.
Fax""Pedidos donde el campo Fax está vacío (cadena de longitud cero).

Uso del Operador Like y Caracteres Comodín

El operador Like se usa para buscar patrones de texto. Los caracteres comodín comunes en Access son * (cero o más caracteres), ? (un solo carácter), # (un solo dígito), [] (cualquier carácter dentro de los corchetes) y ! (cualquier carácter que no esté dentro de los corchetes).

CampoExpresión (Criterios)Descripción
Nombre de envíoLike "S"Nombres que empiezan con S.
Nombre de envíoLike "Imports"Nombres que terminan con "Imports".
Nombre de envíoLike "[A-D]"Nombres que empiezan con A, B, C o D.
Nombre de envíoLike "ar"Nombres que contienen "ar" en cualquier posición.
NombreDeEnvíoComo "Casa Dewe?"Nombres que empiezan con "Casa Dewe" seguido de un solo carácter cualquiera.
NombreDeEnvíoNot Like "A"Nombres que NO empiezan con A.
CódigoDeProductoRight([CódigoDeProducto], 2)="99"Códigos de producto que terminan en "99".

Criterios con Agregados de Dominio

Puedes usar funciones de dominio en los criterios para filtrar basándote en un cálculo realizado sobre otro conjunto de datos.

CampoExpresión (Criterios)Descripción
Transporte> (DDesvEst("[Transporte]", "Pedidos") + DProm("[Transporte]", "Pedidos"))Pedidos cuyo transporte es mayor que el promedio más la desviación estándar de todos los transportes.
Cantidad> DProm("[Cantidad]", "[Detalles del Pedido]")Productos pedidos en cantidades superiores a la cantidad promedio de todos los detalles de pedido.

Criterios con Subconsultas

Las subconsultas (consultas anidadas) pueden usarse en criterios para filtrar registros basándose en un valor o conjunto de valores devueltos por otra consulta.

CampoExpresión (Criterios)Descripción
PrecioUnidad(SELECT [PrecioUnidad] FROM [Productos] WHERE [NombreDeProducto] = "Aniseed Syrup")Productos cuyo precio unitario es igual al precio del sirope de anís.
PrecioUnidad>(SELECT AVG([PrecioUnidad]) FROM [Productos])Productos con un precio unitario superior al precio promedio de todos los productos.
Salario> ALL (SELECT [Salario] FROM [Empleados] WHERE ([Puesto] LIKE "Gerente") OR ([Puesto] LIKE "Vicepresidente"))Empleados con salario superior al de todos los empleados que son Gerentes o Vicepresidentes.

También puedes usar subconsultas en campos calculados, como se vio en un ejemplo anterior para obtener el nombre de categoría.

En resumen, las expresiones son el motor de Access. Permiten realizar cálculos complejos, manipular texto, manejar datos faltantes y filtrar información de manera precisa. Dominar su uso te permitirá aprovechar al máximo tus bases de datos de Access.

Preguntas Frecuentes sobre Expresiones en Access

¿Dónde puedo escribir expresiones en Access?
Puedes escribir expresiones en varios lugares, incluyendo la propiedad "Origen del Control" de cuadros de texto/etiquetas en formularios e informes, la fila "Campo" (para campos calculados) o "Criterios" en la cuadrícula de diseño de consultas, la propiedad "Valor Predeterminado" de campos o controles, y la propiedad "Regla de Validación".
¿Cuál es la diferencia entre el operador & y + para concatenar texto?
Ambos combinan texto. La principal diferencia es cómo manejan los valores Nulos. El operador & trata los Nulos como cadenas vacías, por lo que "Hola" &amp; Nulo resulta en "Hola". El operador + soporta la propagación de nulos; si alguno de los elementos es Nulo, el resultado de la concatenación será Nulo ("Hola" + Nulo resulta en Nulo). Generalmente, & es más seguro para la concatenación de texto.
¿Cómo evito que una expresión me dé Nulo si un campo está vacío?
Usa la función Nz(). Por ejemplo, Nz([MiCampo], 0) devolverá el valor de [MiCampo] si no es Nulo, o 0 si es Nulo. Nz([MiCampo], "") devolverá el valor o una cadena vacía si es Nulo.
¿Qué son las funciones de agregado de dominio y cuándo las uso?
Las funciones de agregado de dominio (DSuma, DCont, DBúsq, etc.) calculan valores sobre un conjunto de registros especificado (un dominio, como una tabla o consulta completa), opcionalmente aplicando criterios. Las usas cuando necesitas calcular o buscar un valor que no está en el conjunto actual de registros con el que estás trabajando, o cuando necesitas aplicar criterios complejos al cálculo agregado.
¿Puedo usar expresiones para formatear datos?
Sí, aunque a menudo el formato se maneja con las propiedades de formato del control o campo, puedes usar funciones en expresiones para dar formato. Por ejemplo, Formato([MiFecha], "dd/mm/yyyy"). También puedes usar expresiones en el formato condicional para cambiar la apariencia de un control basándose en su valor o el de otros controles.

Si quieres conocer otros artículos parecidos a Expresiones en Access: Guía Completa puedes visitar la categoría Bases de datos.

Ivan

Soy un entusiasta de la tecnología con especialización en bases de datos, particularmente en MySQL. A través de mis tutoriales detallados, busco desmitificar los conceptos complejos y proporcionar soluciones prácticas a los desafíos cotidianos relacionados con la gestión de datos

Aprende mas sobre MySQL

Subir