Macros

Hoy explicaré el funcionamiento de las macros en Ax y como en todo los post os mostraré algunos ejemplos que podréis probar.
Empezaré explicando que una macro no es más que una variable que el precompilador interpreta, en caso de que no sea correcta, ya no nos permitirá compilar.
La directiva #define le indica al precompilador que es una variable de tipo Macro. Todas las directivas y símbolos de las macros empiezan con el símbolo #.

Podríamos distinguir dos tipos de macros en Ax: las que son un objeto físico en el AOT y las que se crean por código.

Las creadas como un objeto las encontraremos en el siguiente nodo del AOT.

AOT > Macros

Para acceder a los valores definidos en la macro deberemos clickar dos veces sobre la macro.


En la imagen podemos ver que tenemos distintos textos predefinidos para la macro 'AOT'.
 
 

Como recuperar el valor de una macro. 

 
Vamos a ver como recuperar el valor de una macro para poderla utilizarla en nuestro código.

En la imagen podemos ver dos valores de la macro Excel, para recuperarlos tenemos que declararnos la macro en nuestro código y llamar a los valores que queremos para eso lo haremos con el siguiente formato:

# + el nombre del define que deseamos llamar.



Para añadir un nuevo valor a una macro existente simplemente debemos añadir la línea que deseamos en la macro.

Recordad que debe tener el siguiente formato:

#define. + nombre con la que lo llamaremos + (valor - puede ser un texto o númerico)

Ejemplo:

#define.EXCEL2013('Excel.Application2013')

Utilizando el mismo ejemplo que antes lo llamaríamos como sigue.

info(#EXCEL2013);

 

Crear una nueva macro.

 
Las macros se crean de la misma manera que todos los objetos de AX, situándonos encima del nodo de macros y abriendo el submenú.



Modificaremos el nombre (No debe estar abierta la macro) y guardaremos. 



Como se ve en la imagen he declarado un define en mi macro y en el job llamo a este define de esta nueva macro,





Asignar un valor de la macro a un string.


En el siguiente ejemplo veremos como asignar el valor de una macro a un string. Para hacerlo posible el valor devuelto a de ser de tipo string.


Define

 
Los podríamos definir como una constante que se declara con la directiva #define, cuando digo constante quiero decir que tendrá el mismo valor a lo largo de todo el programa, ya que éste no es modificable.
 
En el ejemplo vemos que guardamos un string y un entero, y posteriormente lo utilizamos en un where.


Si, lo veis bien en la imagen, estos valores no solo sirven para mostrarse o asignarse a otra variable, también se pueden utilizar para realizar consultas.  
Recordad que son pequeñas porciones de código que el precompilador comprueba y si es correcto, luego el compilador recupera el valor.

#If, #IFNOT..

 
En los siguientes ejemplos veréis que utilizo las siguientes macro definidas.

#If : Verifica si la macro existe
#Ifnot: Si no existe la macro
#ENDIF: Señal que indica el final del if.
#IF.EMPTY(): Verifica si está vacío.
#IFNOT.EMPTY: Verifica que no este vacío.

 
 

Crear una consulta mediante una localMacro y con parámetros.


Este ejemplo es un poco más complejo pero no tiene ninguna dificultad si observáis con atención el código, en él realizaremos un while select mostrando los registros de la tabla y campo que le pasemos por parámetros.
Simplemente utilizamos lo explicado anteriormente.

Leed los comentarios escrito en los códigos para entender lo que hace.

Comentarios