La Calculadora
<< Click to Display Table of Contents >> Navegación: Guía de usuario > Generalidades > La Calculadora |
La Calculadora de campos se utiliza para introducir expresiones que modifican el valor del campo activo, pudiendo aplicar la operación a múltiples líneas de la lista siempre en la misma columna.
Para abrir este diálogo modal, hay que pulsar la tecla F9 en cualquier campo numérico o alfanumérico de la línea de edición de una lista.
Contiene una línea en la que se pueden introducir expresiones que operen con los datos que se encuentran dentro de los campos, o transcribir el total de la operación efectuada, para múltiples líneas de la lista.
La expresión es una fórmula que se compone de operadores, variables, funciones y constantes.
El campo reconoce tres partes diferenciadas; la primera especifica un operador que dará la forma que afecta la línea de comandos al campo activo; se admiten seis operadores: suma, producto, diferencia, división, exponente y asignación. Estos operadores se pueden aplicar a una variable llamada ‘a’ que representa el valor del campo actual, e ‘i’ que representa el número de la línea actual.
La segunda parte permite escribir cualquier expresión numérica que, unida al operador anterior, dará el total que aparecerá en el campo activo.
En estas expresiones se pueden utilizar los siguientes operadores y funciones:
Operadores aritméticos
+ adición (si el campo es numérico, suma; si el campo es texto, concatena)
- sustracción
* producto
/ división
^ exponencial (potencia)
= asignación
Operadores lógicos
! negación
y Y & && función AND, producto lógico
o O | || función OR, suma lógica
== igual
!= <> distinto
<= =< menor o igual
>= => mayor o igual
< menor
> mayor
Funciones
Los parámetros de las funciones van separados por el carácter punto y coma ’;’ sin espacios en blanco en la calculadora (siempre que se tenga configurado Windows como castellano), y separados por comas ‘,’ sin espacios en blanco cuando se utilizan en el lenguaje de programación de informes JScript.
Lo que llamamos expresión regular puede contener los siguientes comodines: '?' cualquier carácter, '*' cualquier número de caracteres (al principio, en medio o al final), '[...]' cualquier carácter dentro de los corchetes, la lista dentro de los corchetes admite rangos '[...-...]' y negación '[!...]'.
año (fec): devuelve las dos últimas cifras del año de una fecha fec
añol (fec): devuelve el año de una fecha fec en formato largo de cuatro dígitos
atof (cad): el número real cuya representación, como cadena de caracteres, es cad
atoi (cad): el número entero cuya representación, como cadena de caracteres, es cad
ceil (val): redondeo por exceso de val
dia (fec): recupera el día de una fecha fec con formato estándar
dial (fec): recupera el nombre del día de la semana de una fecha fec con formato estándar
div (x; y): división entera de x/y
fec2str (fec [;for]): devuelve en formato cadena, la fecha fec que se le pasa con formato de fecha estándar (AAAAMMDD), representada opcionalmente con la máscara de formato for. P.ej. fec2str (fin;"dd mm-aa") representaría la fecha de finalización como 01 03-10. Por defecto, si no se pone ninguno, el formato es el definido en el campo en las opciones del programa para las fechas.
fecha (dia];mes];año;[o): devuelve una fecha fec completa con datos parciales, una fecha incompleta, con la opción o que completa días y meses en fechas incompletas con los valores: (1) completa con el primer día y mes, (2) completa con último día y/o último mes.
Ejemplos: fecha (0,0,10,1) devuelve la fecha 20100101 que formateada como cadena será 01/01/10, y fecha (0,2,2010,2) devuelve 29/02/10
fecmas (fec; d; m; a): devuelve la fecha fec incrementada o decrementada en d días, m meses y a años (sumando días y meses como en el calendario y empezando por los días). Por ejemplo: fecmas (str2fec (20100201);0;1;-2) da como resultado la fecha (no la cadena) 01/03/10. Hay que usar str2fec () porque el parámetro es una fecha, no una cadena de caracteres.
floor (val): parte entera de val (redondeo por defecto)
fmod (x; y): resto de la división de los dos números en coma flotante
ftoa (val; [dec; [tam): convierte un número real val a texto, puede tener un segundo parámetro para definir con qué número de decimales y un tercero para el tamaño del texto en número de caracteres
itoa (val [;tam]): convierte un número entero val a texto, puede tener un segundo parámetro para definir el tamaño de texto
len (cad): longitud de una cadena de caracteres
max (a; b; c; ...): valor máximo de entre todos los valores numéricos que se pasen como parámetro
mes (fec): devuelve el mes en número de una fecha fec
mesl (fec|num): devuelve una cadena con el nombre del mes, capitalizado, de una fecha fec en formato estándar. Si el parámetro es un número del 1 al 12, en vez de una fecha, devuelve el nombre de ese número de mes
med (a; b; c; ...): media aritmética calculada con todos los valores pasados como parámetro
med0 (a; b; c; ...): como med (), devuelve el valor de la media aritmética, pero calculada sin tener en cuenta los elementos que son cero
min (a; b; c; ...): valor mínimo de todos los valores pasados como parámetro
min0 (a; b; c; ...): valor mínimo de entre todos los valores, como min (), pero sin tener en cuenta los elementos que son cero (que siempre son los primeros)
mod (x; y): resto de la división entera de x e y
red (val; dec): el número val redondeado a dec cifras significativas
str (cad; i; n): obtiene de la cadena de caracteres cad, la subcadena que comienza en la posición i y tiene n caracteres
str2fec (cad): convierte la cadena numérica cad con formato de fecha, en formato real de tipo fecha (un número con formato AAAAMMDD)
sus (cad; co; cd [;tod]): devuelve la cadena cad con la primera aparición de la cadena de origen co sustituida por la cadena destino cd. Si el parámetro tod=1 se sustituyen todas las apariciones en la cadena, no sólo la primera.
Funciones matemáticas de menos utilización
Además de funciones para manejo de fechas y cadenas, y las funciones matemáticas más corrientes, hay otras trigonométricas y de menor uso:
abs (x): valor absoluto de x
acos (x): arco coseno de x en grados sexagesimales
asin (x): arco seno de x en grados sexagesimales
atan (x): arco tangente de x en grados sexagesimales
atan2 (x; y): arco tangente (en cualquier cuadrante) de la línea que une el punto (x; y) con el origen
cos (x): coseno de x (grados sexagesimales)
exp (x): el número e elevado a x (e es la base de los logaritmos naturales)
ln (x): logaritmo neperiano
log (x): logaritmo decimal de x
sin (x): seno de x (grados sexagesimales)
sqrt (x): raíz cuadrada de x
tan (x): tangente de x (grados sexagesimales)
Todos los términos mencionados en este tema, se utilizan en:
•Lenguaje de programación de informes
•Ventana Calculadora, en los campos de edición.
En los lenguajes de programación se utilizan como variables los siguientes caracteres permitidos: El guión subrayado _ , el punto ., los caracteres desde la A hasta la Z, en mayúsculas y minúsculas, incluida la ñ, los diacríticos y el signo dólar $.
La tercera parte, separada con un blanco de la anterior, indicará el número de líneas a las que la expresión en ese campo afectará, incluyendo la actual.
Se pueden operar fechas, tratándolas como si fuesen números (en sus dos formatos internos: DDMMAA ó AAAAMMDD) o mejor aún, con la función de suma y resta de fechas fecmas(). Ésta posibilidad es muy útil cuando se trata de cambiar una serie muy grande de fechas de forma automática, por ejemplo, poniendo en la calculadora “100”+i+”10” 8 pondrá en las ocho líneas de concepto siguientes a la actualmente seleccionada (si son las únicas que se muestran en pantalla), fechas desde el 10/01/10 al 10/08/10. También se puede operar en campos alfanuméricos (código, resumen, ...) para de la misma forma, modificar o introducir datos masivamente.
Se pueden realizar operaciones masivas de sustitución de códigos mediante el formato de series: con el formato "00A1++" 100 situado en la primera línea de una lista de conceptos, tomará el primer código libre de la serie 00A1 y los irá incrementando en uno, cambiando las 100 líneas siguientes a la actualmente seleccionada.
Se pueden “limpiar” los campos de fechas de 10 líneas con la expresión: “” 10, y los campos numéricos de importes, mediciones, etc. con “” 10 o 0 10 (ambas son válidas).
También hay una forma de acceder a la información que contiene cualquiera de los campos visibles de la pantalla, desde la calculadora. Las variables a1, a2, a3, etc. y a_1, a_2, a_3, etc. hacen referencia a los contenidos de los tres primeros campos por la derecha y por la izquierda, respectivamente, al campo actual.
A este efecto, sólo se tienen en cuenta los campos visibles —tengan edición o no—, así que por ejemplo, si tenemos en pantalla mostrados los campos: Código, Ud. resumen, precio, fecha, medición, subtotal. Si nos situamos con la calculadora en el campo precio, el contenido de la misma línea de concepto en el campo medición se puede referenciar como ‘a2’ y el de código como ‘a_3’.
El criterio "inteligente" que sigue la aplicación, es que cualquier campo referenciado con 'a', 'a1', 'a_1' etc. que se utilice con las funciones str() y sus() o que se operen con una cadena entre comillas " ", se toma como campo alfanumérico (es decir que por ejemplo, la suma concatenaría en vez de devolver la suma aritmética).
El botón Acepta devolverá a la ventana del campo activo, donde aparecerá el total hallado entre la ventana Calculadora y el valor que contenía dicho campo.