我正在使用一个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在另一个)。
答案 0 :(得分:2)
在Microsoft.Dynamics.AX.ManagedInterop.RuntimeContext.Current上使用TTSBegin()
和TTSCommit()
方法。 forUpdate标志可以由QueryBuildDataSource的update()
设置。
在X ++方法中编写它只是从C#中调用方法可能更容易(并且更好地进行维护)。