2012-03-07 15 views
7

¿Hay algo similar al famoso método toString() de C# en Axapta?¿Qué es el varient .toString() en X ++ o Dynamics AX?

trato de ejecutar código subyacente:

info(this.dataSource()); 

pero me da este mensaje de error: " 'txt' El argumento es incompatible con el tipo requerido."

+0

'info' espera un valor de cadena. No hay conversión automática –

Respuesta

9

El toString está disponible en todos los objetos, pero normalmente no es de mucho valor:

info(this.dataSource().toString()) 

Esto da este resultado:

Class FormDataSource Address 

Probablemente sabía que ya! Sin embargo, la fuente de datos de consulta sí da algo útil:

FormDataSource fds = this.dataSource(); 
; 
info(fds.query().dataSourceTable(tableNum(Address)).toString()); 

da la consulta SQL correspondiente:

SELECT FIRSTFAST * FROM Address 
+1

.toString() también es útil en clases de colección AX, como el tipo de matriz. Array.toString() a menudo generará contenido legible. Si tiene una variedad de clases o algo extraño, quizás no. –

+1

Siempre trato de evitar usar datSourceNo() en el código de producción porque el dataSourceNo puede cambiar. Si modifica el formulario o informe y agrega o elimina (o incluso cambia el orden de) dataSources, esto romperá su código. He visto que esto ocurre en el código base de Microsoft al actualizar de 4.0 a 2009, cambiaron el orden de algunas fuentes de datos y rompieron las búsquedas que usaban DataSourceNo. Siempre trato de usar dataSource(). Name(), porque es mucho menos probable que cambie. –

0

Lamentablemente, no, pero hay una serie de métodos "... 2Str()" para convertir tipos de datos base a cadena, por ejemplo;

int2Str() http://technet.microsoft.com/en-us/library/aa851371(v=ax.50).aspx

int642str() http://technet.microsoft.com/en-us/library/aa851371(v=ax.50).aspx

date2str() http://msdn.microsoft.com/en-us/library/aa857241(v=ax.10).aspx

Plus otros.

+0

Lea de nuevo He actualizado la pregunta – SamekaTV

+0

@IllDevelopIt Voy a actualizar la respuesta: ¿está tratando de obtener la descripción del origen de datos o los contenidos en una cadena? – AnthonyBlake

2

Si sólo se busca el nombre de la fuente de datos se puede hacer lo siguiente:

info(this.dataSource().name()); 
0

Solo quiero agregar que a menudo uso strFmt.

Counter c = 25; 
int id = 3; 
; 
info(strfmt("Record number %1, id = %2", c, a)); //Record number 25, id = 3 

Es similar a String.Format() en C#. Puede ver más detalles here.

Cuestiones relacionadas