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

Axapta 如何确定表中创建了多少行?,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,如何确定一个进程内在表上创建的行数?计数记录很容易: RecId c = (select count(RecId) from InventTable).RecId; info(strFmt("%1", c)); 根据您对“进程”的定义,计算进程的记录可能会更加困难,因为这不是AX概念 对于启用了CreatedTransactionId属性的表,可以计算事务中插入的记录数 TransactionLog log; RecId c; ttsBegin; log.insert(); c = (sele

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

计数记录很容易:

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()
方法,当在设置属性的表中插入记录时,该方法返回一个非零值。每个事务的值都会递增

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;

在生产代码中,
createdTransactionId
上的索引是提高效率所必需的。

Hello Jan,我将很快解释我所说的“过程”的确切含义。。。例如,当我在“ProdTableListPage”表单中选择产品并按下“ReportAs finished”按钮时,“ProdParmReportAsFinished”表单与所选产品一起出现。在这个表单上,当我们按下“ok”按钮时,它开始将3种类型的日记账发布到“ProdJournalTable”表中。因此,所谓“流程”,我指的是用户按下“确定”按钮直到过账结束的那一刻,我想以某种方式计算所有3种类型的日记账(领料单、路线卡和完工报告)是否已成功过账。希望我解释清楚,然后您必须更改生产日志类的逻辑以返回相关数字。这不是标准功能。查找名为
Prod*Multi
的类。创建一个返回已过账日记账数量的方法(在
run
之后调用)。