使用ManagedInterop从C#中删除记录

时间:2012-06-18 20:24:56

标签: c# dynamics-ax-2012

我正在使用一个C#项目,它使用dll,Microsoft.Dynamics.AX.ManagedInterop来处理AX 2012环境。在代码中,我需要根据特定条件找到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在另一个)。

1 个答案:

答案 0 :(得分:2)

在Microsoft.Dynamics.AX.ManagedInterop.RuntimeContext.Current上使用TTSBegin()TTSCommit()方法。 forUpdate标志可以由QueryBuildDataSource的update()设置。

在X ++方法中编写它只是从C#中调用方法可能更容易(并且更好地进行维护)。