在JD Edward的One World(E1)包中,是否可以使用内置的Update表函数来更新where子句中也使用的特定字段?
用例是我正在执行循环通过一系列“未处理”记录的批处理过程,并在处理它们之后,更新表以显示“已处理”状态。有三种状态(已处理,未处理和已忽略)。在我更新期间,我不能简单地将所有标志更新为“已处理”,而不会意外更新标记为“已忽略”的标记。
If PO cProcessedFlag is equal to "U"
Table1.Select
Table1.Fetch Next
While SV File_IO_Status is equal to CO SUCCESS
...
Table1.Fetch Next
End While
End If
Table1.Update
我需要能够在此处更新已处理的字段(Table1.Update),同时还能够指定字段不是“I”的位置。
答案 0 :(得分:0)
您可以同时选择和更新记录。没问题(假设DOCO是Table1的主键):
Table1.Select
PO cProcessedFlag = BC cProcessedFlag
Table1.Fetch Next
VA mnOrderNumber[DOCO] <- BC mnOrderNumber[DOCO]
While SV File_IO_Status is equal to CO SUCCESS
...
Table1.Update
VA mnOrderNumber[DOCO] = VA mnOrderNumber[DOCO]
“P” -> BC cProcessedFlag
Table1.Fetch Next
VA mnOrderNumber[DOCO] <- BC mnOrderNumber[DOCO]
End While
在ER中编写代码时,中间件实际上会为每个tableIO执行打开,选择,关闭等操作。因此第二个Table1.FetchNext的句柄与为Table1.Update生成的open,select,update,close非常不同