Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openedge 如何为每个正在进行的语句省略?_Openedge_Progress 4gl - Fatal编程技术网

Openedge 如何为每个正在进行的语句省略?

Openedge 如何为每个正在进行的语句省略?,openedge,progress-4gl,Openedge,Progress 4gl,我很难通过从一个表中获取前两条记录。 我的目标是从表中只读取前2条记录,并将一个字段值保存到变量中 假设我有一个表MyTable,其中包含字段PartNr,CreationDate,公司,ID 我对每个语句的如下所示: FOR EACH MyTable WHERE MyTable.Company = "TestCompany" AND MyTable.CreationDate >= 01.01.2021 NO-LOCK: END. OP

我很难通过
从一个表中获取前两条记录。
我的目标是从表中只读取前2条记录,并将一个字段值保存到变量中

假设我有一个表
MyTable
,其中包含字段
PartNr
CreationDate
公司
ID

我对每个
语句的
如下所示:

FOR EACH MyTable
   WHERE MyTable.Company = "TestCompany"
      AND MyTable.CreationDate >= 01.01.2021
   NO-LOCK:
   
END.
OPEN QUERY qMyQuery 
    FOR EACH MyTable
       WHERE MyTable.Company = "TestCompany"
         AND MyTable.CreationDate >= 01.01.2021
         NO-LOCK. 
         
QUERY qMyQuery:GET-FIRST. 

QUERY qMyQuery:GET-NEXT. 

CLOSE QUERY qMyQuery.
例如,每个语句可以找到15条记录。然而,我只需要前两个。 我想将
first
记录的
PartNr
存储在一个变量中,将
second
记录的
PartNr
存储在另一个变量中

之后,每个
语句的
应该结束

我也尝试过使用
findfirst
,但我不知道如何获取第二条记录

在使用
loops
时,我正在寻找一个相当于
break
关键字的
python


非常感谢您提供的任何帮助。

如果您事先知道的迭代次数确实有限,并且如果您正在根据当前记录执行不同的逻辑,那么您也可以使用静态查询。这可能会使代码更简洁

DEFINE VARIABLE iCounter AS INTEGER NO-UNDO . 

myLoop:
FOR EACH MyTable
   WHERE MyTable.Company = "TestCompany"
      AND MyTable.CreationDate >= 01.01.2021
   NO-LOCK:
   
   iCounter = iCounter + 1 . 

   IF iCounter = 2 THEN 
      LEAVE myLoop . 

END.
大概是这样的:

FOR EACH MyTable
   WHERE MyTable.Company = "TestCompany"
      AND MyTable.CreationDate >= 01.01.2021
   NO-LOCK:
   
END.
OPEN QUERY qMyQuery 
    FOR EACH MyTable
       WHERE MyTable.Company = "TestCompany"
         AND MyTable.CreationDate >= 01.01.2021
         NO-LOCK. 
         
QUERY qMyQuery:GET-FIRST. 

QUERY qMyQuery:GET-NEXT. 

CLOSE QUERY qMyQuery.

如果您事先知道迭代次数是有限的,并且根据所达到的记录执行不同的逻辑,那么您也可以使用静态查询。这可能会使代码更简洁

大概是这样的:

FOR EACH MyTable
   WHERE MyTable.Company = "TestCompany"
      AND MyTable.CreationDate >= 01.01.2021
   NO-LOCK:
   
END.
OPEN QUERY qMyQuery 
    FOR EACH MyTable
       WHERE MyTable.Company = "TestCompany"
         AND MyTable.CreationDate >= 01.01.2021
         NO-LOCK. 
         
QUERY qMyQuery:GET-FIRST. 

QUERY qMyQuery:GET-NEXT. 

CLOSE QUERY qMyQuery.

您还可以为每个
语句添加
,而iCounter<2
则添加到
。@nwahmaet+100,虽然
leave
有其用途,但我发现它破坏了自然流,几乎和
goto
语句一样严重。:-)您还可以为每个
语句添加
,而iCounter<2
则添加到
。@nwahmaet+100,虽然
leave
有其用途,但我发现它破坏了自然流,几乎和
goto
语句一样严重。:-)很有趣你的问题的标题如何包含答案:-)很有趣你的问题的标题如何包含答案:-)