3

我正在处理一个 C# 项目,该项目使用 dll Microsoft.Dynamics.AX.ManagedInterop 与 AX 2012 环境一起工作。在代码中,我需要根据特定条件找到一个 SalesQuotationLine 并将其删除。到目前为止,我可以获得我需要的记录,但我无法删除它,因为我没有使用TTSBEGIN/TTSCOMMIT 语句并且我没有使用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而不是另一个)。

4

1 回答 1

2

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

用 X++ 方法编写它可能更容易(并且更便于维护),只需从 C# 调用该方法。

于 2012-06-19T11:41:13.253 回答