3

私は、dll、Microsoft.Dynamics.AX.ManagedInterop を使用して AX 2012 環境で動作する C# プロジェクトを使用しています。コード内から、特定の条件に基づいて SalesQuotationLine を見つけて削除する必要があります。TTSBEGIN/TTSCOMMIこれまでのところ、必要なレコードを取得できますが、 T ステートメントを使用しておらず、 も使用していないため、削除できませんFORUPDATE。これは私のコードです:

DictTable dictTable = new DictTable(Global.tableName2Id("SalesQuotationLine"));
int quotationIdFieldId = (int)dictTable.Call("fieldName2Id", "QuotationId");
int bdcParentRecIdFieldId = (int)dictTable.Call("fieldName2Id", "BDCParentRecId");

var query = new Query();
var datasource = query.addDataSource(Global.tableName2Id("SalesQuotationLine"));
var queryRange1 = datasource.addRange(quotationIdFieldId);
queryRange1.value = "=" + line.QuotationId;            

QueryRun queryRun = new QueryRun(query as object);
while (queryRun.next())
{
    var result = queryRun.get(Global.tableName2Id("SalesQuotationLine"));
    result.Delete();
}

http://msdn.microsoft.com/en-us/library/cc197113.aspxのコードも参照しましたが、使用しているコードは .NET Business Connector を使用していないため、使用できないことがわかりました。 (ある dll をいつ他の dll よりも優先して使用する必要があるかはわかりません)。

4

1 に答える 1

2

Microsoft.Dynamics.AX.ManagedInterop.RuntimeContext.Currentでの使用TTSBegin()とメソッド。TTSCommit()forUpdateフラグは、QueryBuildDataSourceのによって設定できますupdate()

C#からメソッドを呼び出すだけで、X ++メソッドで記述する方が簡単(およびメンテナンスに適している)になる場合があります。

于 2012-06-19T11:41:13.253 に答える