Cómo ejecutar una Page o un Report con una variable RecordRef

Coding_IconLas variables de tipo RecordRef son, para muchos de los profesionales en el desarrollo de Microsoft Dynamics NAV, desconocidas.

El número de veces en las cuales son útiles es limitado, y por lo tanto, esto crea un no conocimiento en uso de las mismas.

En este post no quiero describir qué son y para qué se utilizan. Si eso me lo reservo para una publicación futura :)

Recientemente me encontré con cierta necesidad que me hizo requerir un modo de ejecutar una página cuyo número es dinámico, y cuya tabla también lo era.

La página era un listado de tablas dentro del sistema con el número de registros de cada una de ellas. Y necesitaba que al hacer click encima de cada valor, se abriese la página de la tabla correspondiente con los valores que contiene.

Evidentemente mi primera idea fue utilizar una variable de tipo RecordRef para esta parte y como número de página darle 0, de modo que utilizase el número de página relacionado a esa tabla. El resultado fue un error:

ErrorRecordRef

Así pues me puse a buscar y encontré un post genial de Arend-Jan Kauffmann donde explicaba cómo hacerlo (ver post original).

Entonces, ¿cómo lo hacemos ?

Pues es muy sencillo. El PAGE.RUN no aceptará como parámetro de tipo Record uno que sea de tipo RecordRef. Pero sí aceptará uno de tipo “Variant”.

Entonces lo que tenemos que hacer es de algún modo pasarle la información del RecordRef a la Variant y al PAGE.RUN pasarle la Variant con la información correcta!

Para ello podemos utilizar el siguiente código:

RecRef.OPEN(ID); // ID = Table Number
VarRecRef := RecRef; // Variant := RecordRef

Y solo nos queda ejecutar la página:


PAGE.RUN(0,VarRecRef);

De modo que un ejemplo de código completo podría ser:

RecRef.OPEN(27); // ID = Table Number | 27 = Item Table
VarRecRef := RecRef; // Variant := RecordRef

PAGE.RUN(0,VarRecRef); // This runs the Item List Page

Por supuesto el mismo funcionamiento se puede utilizar con un informe.


REPORT.RUN(MyReport,TRUE,TRUE,VarRecRef);









This entry was posted in NAV2009, NAV2013, NAV2013R2, NAV2015, Navision, Tips&Tricks and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*