我在c#中有一些使用AX Business连接器的代码,它是这样的:
AxaptaRecord OrderRecord = (AxaptaRecord)ax.CallStaticClassMethod("BTNOnlineOrder", "getSalesOrder", salesRef);
if (OrderRecord.Found)
{
AxaptaObject Lines = (AxaptaObject)OrderRecord.Call("querySalesLine");
AxaptaObject qrLines = (AxaptaObject)ax.CreateAxaptaObject("QueryRun", Lines);
while ((bool)qrLines.Call("next"))
{
int tableid = (int)ax.CallStaticClassMethod("Global", "tableName2Id", "InventTable");
AxaptaRecord r = (AxaptaRecord)qrLines.Call("get", tableid);
}
}
当我尝试调用“get”方法时出现以下错误:
执行代码时出错:函数的参数类型错误。
tableid返回一个int值,175,因此不是因为tableid为null或其他原因。
任何帮助将不胜感激
答案 0 :(得分:2)
如果您使用的查询没有指向InventTable的数据源,您将收到此(令人困惑的)错误。我已经验证此代码会在Axe sys层的默认SalesLine查询中抛出此异常。我同意,这是一个令人困惑的错误。
如果您在消费代码中需要InventTable,则需要定义自定义查询并从querySalesLine方法返回该查询。
答案 1 :(得分:0)
我使用getNo
方法并将1作为参数传递给我。我不确定这是不是正确的方式,但它对我有用:
http://msdn.microsoft.com/en-us/library/aa612609(v=ax.50).aspx