Dynamics AX Web Service返回奇怪的字符串

时间:2014-08-12 16:26:28

标签: c# web-services axapta dynamics-ax-2012

我想从dynamicsAx中提取SQL语句。

我遵循了这个教程: http://msdn.microsoft.com/en-us/library/gg844225.aspx

然后我将我的getEmployee方法更新为以下内容:

[SysEntryPointAttribute(true)]
public AA_PS_TableExchange getEmployee(int id)
{
    AA_PS_TableExchange xchange;
    Common buffer;
    ;
    buffer = SysDictTable::newTableId(id).makeRecord();
    select generateOnly buffer;
    xchange = new AA_PS_TableExchange();
    xchange.sql(buffer.getSQLStatement());
    return xchange;

}

我的AA_PS_TableExchange看起来像这样:

[DataContractAttribute]
public class AA_PS_TableExchange
{
    int tableId;
    str sql;
}
[DataMemberAttribute]
public str sql(str _sql = sql)
{
    sql = _sql;
    return sql;
}
[DataMemberAttribute]
public int tableId(int _tableId = tableId)
{
    tableId = _tableId;
    return tableId;
}

现在,如果我从我的c#代码调用webservice,它将始终将sql设置为“1”而不是真正的sql语句。如果我改变这一行:

  xchange.sql(buffer.getSQLStatement());

  xchange.sql("an assignment");

它有效,我将在我的.Net代码中获得“分配”。

我在这里缺少什么想法? 我认为它可能与引用有关但我在这里没有任何线索。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

看起来这个问题只能出现在几个地方:

xchange.sql(...)只接受基本的 AX 字符串类型吗?

您是否已执行增量CIL构建?

id是否有有效的表格ID?

尝试将代码更改为此并执行增量CIL构建。

[SysEntryPointAttribute(true)]
public AA_PS_TableExchange getEmployee(int id)
{
    AA_PS_TableExchange xchange;
    Common buffer;
    DictTable dictTable = new DictTable(id)
    ;

    if (!dictTable)
        throw error("Table not found");

    buffer = dictTable.makeRecord();

    select generateOnly buffer;
    xchange = new AA_PS_TableExchange();
    xchange.sql(buffer.getSQLStatement());
    return xchange;
}