您是通过 BC.NET 访问 Ax 吗?如果是这样,这里是如何使用 BC.NET 中的 QueryRun 的示例:
using (var ax = new Axapta())
{
ax.Logon(null, null, null, null);
int tableId = ax.GetTableId("TaxTable");
var query = ax.CreateAxaptaObject("Query");
var qbd = (AxaptaObject)query.Call("addDataSource", tableId);
var qr = ax.CreateAxaptaObject("QueryRun", query);
while ((bool)qr.Call("next"))
{
var record = (AxaptaRecord)qr.Call("Get", tableId);
Console.WriteLine("TaxCode: {0}", record.get_Field("TaxCode"));
Console.WriteLine("TaxName: {0}", record.get_Field("TaxName"));
}
ax.Logoff();
}
GetTableId 扩展方法取自这篇文章:
public static class AxaptaExtensions
{
public static int GetTableId(this Axapta ax, string table)
{
return (int)ax.CallStaticClassMethod("Global", "tableName2Id", table);
}
}