如何确定表中创建了多少行?

时间:2014-05-08 11:31:40

标签: axapta x++ dynamics-ax-2012

如何在一个过程中确定在表上创建的行数?

1 个答案:

答案 0 :(得分:1)

计算记录很简单:

RecId c = (select count(RecId) from InventTable).RecId;
info(strFmt("%1", c));

根据您对"流程"的定义,计算流程记录可能会更加困难,因为这不是AX概念。

对于已启用CreatedTransactionId属性的表,您可以计算在事务中插入的记录数。

TransactionLog log;
RecId c;
ttsBegin;
log.insert();
c = (select count(RecId) from TransactionLog 
     where TransactionLog.createdTransactionId == appl.curTransactionId()).RecId;
info(strFmt("%1 %2", c, appl.curTransactionId()));
ttsAbort;

这使用appl.curTransactionId()方法,当在已设置属性的表中插入记录时,该方法返回非零值。每个事务的值都会递增。

在生产代码中,效率需要createdTransactionId的索引。