0

我想知道是否可以在 c# 中使用 QueryRun 对象,如果可以,我应该导入哪个命名空间来使用它,因为我有一个方法在我的 AX 类中返回一个 QueryRun 对象,我在我的 C# 代码中调用它所以:

CallStaticClassMethod("OnlineUsers", "findMultipleProducts", user, id);

findMultipleProducts 是有问题的方法,我需要将其作为 QueryRun 对象访问,因为我需要使用 .next() 方法遍历产品。任何帮助或示例将不胜感激。

4

1 回答 1

3

您是通过 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);
        }
    }
于 2012-03-13T05:41:40.583 回答