Использование типа данных QueryRun в C # - PullRequest
0 голосов
/ 12 марта 2012

Мне было интересно, возможно ли использовать объект QueryRun в c # и, если да, какое пространство имен я импортирую, чтобы использовать его, так как у меня есть метод, который возвращает объект QueryRun в моем классе AX, который я вызываю в моем Код C # примерно так:

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

findMultipleProducts - это рассматриваемый метод, мне нужно обращаться к нему как к объекту QueryRun, так как мне нужно перебирать продукты с помощью метода .next (). Любая помощь или примеры будут оценены.

1 Ответ

3 голосов
/ 13 марта 2012

У вас есть доступ к Ax через BC.NET?Если это так, вот пример того, как использовать QueryRun из BC.NET:

    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);
        }
    }
...