1

AX で X++ コードを呼び出さずに .NET ビジネス コネクタを使用して、AOT からすべてのテーブル名を取得する方法があるかどうかを知りたいですか?

MSDN によると、テーブル名を指定する必要があります。[リンク]

Axapta ax;
AxaptaRecord axRecord;
using (axRecord = ax.CreateAxaptaRecord(tableName));
{
    // Perform actions
}

Axapta クラスには「GetRecordCount」しかありませんが、レコード名を取得するものはありません。

親切に助けて

4

3 に答える 3

0

前の回答とは逆に、.Net Business Connector を使用してテーブル名のリストを返すことができます。

このメソッドは、AxaptaRecord で ExecuteStmt メソッドを使用して、X++ コードを動的に実行します。

クライアントコードから

Axapta ax = new Axapta();
using (AxaptaRecord r = ax.CreateAxaptaRecord("SQLDICTIONARY")) 
{
    r.ExecuteStmt("SELECT NAME, TABID FROM %1 WHERE %1.NAME LIKE 'CUST*' && %1.FIELDID == 0");

    while (r.Found) 
    {
        Console.WriteLine((string)r.get_Field("NAME"));
    }
}

参照:
http://msdn.microsoft.com/en-us/library/aa594213(v=ax.50).aspx http://www.stoneridgesoftware.com/using-like-in-x/
http:// msdn.microsoft.com/EN-US/library/aa848113.aspx

于 2014-03-20T08:53:38.063 に答える
0

AX からリストを作成し、それにアクセスできます

または、 Dictionaryクラスを使用することもできます。

static void findTables(Args _args)
{
    Dictionary dictionary = new Dictionary();
    TableId tableId;
    TableName tableName;
    for (tableId = dictionary.tableNext(0); tableId; tableId = dictionary.tableNext(tableId))
    {
        tableName = dictionary.tableName(tableId);
        info(strfmt('%1 - %2', tableId, tableName));        
    }
}

これは X++ コードですが、C# への変換は簡単です。

于 2013-01-24T08:40:36.037 に答える