martes, 27 de septiembre de 2011

Dynamics AX y fieldnum dinámico pasado por parámetro

En Dynamics AX tenemos una función del sistema que se llama "fieldnum" que nos devuelve  el identificador de un campo de una tabla dada:

fieldnum(nombreTabla, nombreCampo)

Por ejemplo, si tenemos la tabla "ProjTable", y el campo de la tabla "ProjId", la siguiente sentencia:

fieldnum(ProjTable, ProjId)

nos devolverá el identificador de dicho campo.

Hay muchas tablas de Dynamics AX que se guardan identificadores de campo de otras tablas, una de ellas es la DocuField, que se guarda los campos de la tabla para la gestión documental de Dynamics AX.

Imaginemos que queremos rellenar la tabla Docufield como sigue:




Aquí estamos suponiendo que la tabla TablaDatosDocumento tiene al menos 20 campos y se llaman Campo1, Campo2, Campo3, ... , Campo20.
Nos tenemos que fijar en la línea 15 en la que se utiliza la función fieldnum, pero en lugar de pasarle la tabla y el nombre del campo, le pasamos la tabla y una variable con el nombre del campo.

Bien, pues esto ¡¡NO FUNCIONA!!, fieldnum no es dinámico y no se le pueden pasar variables, los id's de las tablas los calcula en tiempo de compilación, por eso sólo podemos pasarle nombre de tabla y nombre de campo. Si compilamos el código de arriba nos dará un error de compilación.

Entonces, ¿qué hacemos? Miremos el siguiente código:



Ahora sí que sí, esto es otra cosa, afortunadamente tenemos la función fieldName2Id a la que le pasamos el id de la tabla (con la función tablenum) y una cadena con el nombre del campo.

Espero que os sea útil.
Nos leemos.

1 comentario:

  1. Among the other noteworthy geographic markets are Canada and Europe, each forecast to grow at three.1% and 3.5% respectively over the analysis period. With the smartphone have the ability to|you presumably can} stake bets each time and from wherever. The firm started working available on the market later than the first developer. But she managed to interrupt into the industry’s leaders in only a few years. 솔카지노 The full list of features will rely upon the particular digital gambling club.

    ResponderEliminar