我对进度非常陌生(4GL),我正在寻找构建一个函数,该函数将在某些条件下搜索表中的最新信息(由于日期可变)。
在我的表格(ecm_mstr)中,有关于重量,项目编号和历史编号(ID)的信息。一些项目在表中存储了几次,因为它们会更新权重,并且会在新行中进行更新,而不是覆盖。
我受到现有功能的启发,但是没有任何日志错误或控制台来执行我的代码,很难解决问题。可能存在一些结构/语法问题。
我尝试过此操作,但现在不知道该日期的排序方式。。
FUNCTION GetPdsSFtest2 returns decimal (pArticle as char):
def var pLevel as char.
pLevel = substring(pArticle,7,2).
if pLevel = "PF" or pLevel = "NE" then do:
find first ecd_det no-lock where ecd_domain = global_domain
and ecd_part = pArticle no-error. *'Item_Number*
if available ecd_det then do:
find first ecm_mstr no-lock where ecm_domain = global_domain
and ecm_nbr = ecd_nbr no-error. *'historical_number
and treatment on the most recent date *'Searching for a 'sort' of my result to get the first one (so the most recent)*
if available ecm_mstr then return ecm_cmmt[01]. *'Return my find
else return 0.
end.
end
END FUNCTION.
我相信这里最简单的解决方案是将date字段添加为ecm_mstr索引的一部分,这样,当您找到第一个记录时,您将拥有最近的记录。如果您不希望在现有索引中使用该索引,则可以创建一个新索引,并明确使用FIND语句中的USE-INDEX粒子使用特定索引。或者,如果不在表中创建索引,请查看BY函数,但随后您必须将FIND转换为FOR FIRST。希望这会有所帮助。