>我有一个简单的问题,我不知道这是否可能。
在我的课堂上,我有一些方法,特别是我在 LedgerJournalTable 中创建一条记录并将表引用保存在全局变量 _createdLedgerJournalTable 中。
因此,在另一个调用的方法中,我有可能删除刚刚创建的 LedgerJournalTable。
LedgerJournalTable deletedLedgerJournalTable ;
ttsBegin;
select forUpdate LedgerJournalTable
where LedgerJournalTable .RecId == _createdLedgerJournalTable;
LedgerJournalTable .delete();
ttsCommit;
我知道很奇怪,我可以检索已删除记录的部件号?
开始我删除记录,我可以保存 JournalNum 并标记编号序列未使用?
我看过一些例子,就是用来标记数字序列(看到的例子),我可以解锁数字序列吗?
谢谢你的建议,
享受!
如果可能,请避免创建不需要的日志标题。例如,在日记帐行的第一个插入之前创建它。测试if (!journalTable)
.
可以通过调用newGetNum
将第二个参数设置为 true 来实现指定_makeDecisionLater。然后致电 numberSeq.abort()
中止号码生成或numberSeq.use()
以标记为已使用。
仅当与newGetNum
位于同一事务范围内并且编号规则连续时,这才有效。 否则,这两个调用都是无操作。
这是我对非连续序列的解决方案。重写数据源的删除方法。这也可以在表的 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();
}