我有一个简单的问题,我不知道是否有可能。
在我的类中我有一些方法,特别是我在 LedgerJournalTable 中创建了一条记录,并将表引用保存在 global 中变量_createdLedgerJournalTable。
所以,在我之后调用的另一种方法中,我可能删除我刚创建的 createdLedgerJournalTable 。
LedgerJournalTable deletedLedgerJournalTable ;
ttsBegin;
select forUpdate LedgerJournalTable
where LedgerJournalTable .RecId == _createdLedgerJournalTable;
LedgerJournalTable .delete();
ttsCommit;
我知道我可以检索已删除记录的部件号很奇怪吗?
开始我删除记录我可以保存 JournalNum 并标记未使用的数字序列?
我看过一些用于标记数字序列(example seen)的例子,我可以解锁数字序列吗?
感谢您的建议,
享受!
答案 0 :(得分:3)
如果可能的话,如果您不需要,请避免创建日志标题。
例如,在第一次插入日记帐行之前创建它。测试if (!journalTable)
。
您可以通过调用newGetNum
并将第二个参数 _makeDecisionLater 设置为true来实现指定的内容。然后拨打numberSeq.abort()
以中止号码生成或numberSeq.use()
以标记已使用的号码。
仅当与newGetNum
处于相同的事务范围且数字序列是连续的时才有效。如果没有,两个电话都是无操作。
答案 1 :(得分:0)
这是我对非连续序列的解决方案。覆盖数据源的删除方法。这也可以在表的delete方法中实现:
public void delete()
{
NumberSequenceTable numSeqTable;
CMT_RutaId tmpRutaId;
;
tmpRutaId = CMT_RutaJour.RutaId;
numSeqTable = NumberSequenceTable::find(SalesParameters::numRefCMT_RutaId().NumberSequence);
super();
if (numSeqTable.Continuous)
{
// Por si se decide marcar la secuencia como contínua, liberamos el número
NumberSeq::release(SalesParameters::numRefCMT_RutaId().NumberSequence, tmpRutaId);
}
else
{
// Si el registro que estamos eliminando es el último que hemos insertado, recuperamos el número
if (NumberSeq::numInsertFormat(numSeqTable.NextRec - 1, numSeqTable.Format) == tmpRutaId)
{
ttsbegin;
numSeqTable = NumberSequenceTable::find(numSeqTable.NumberSequence, true);
numSeqTable.NextRec--;
numSeqTable.doUpdate();
ttscommit;
}
}
}
并覆盖表单的close方法,以覆盖用户退出表单而不保存记录的情况:
public void close()
{;
if (CMT_RutaJour.RutaId && !CMT_RutaJour.RecId)
CMT_RutaJour_ds.delete();
super();
}