1

これは非常に単純な質問であることをお詫びしますが、ABL オープン エッジを初めて使用するユーザーとして、立ち往生しています。私はそのようにテーブルに値を入力しました

METHOD PRIVATE VOID POPULATETABLE ( ):
    DEFINE VARIABLE I AS INTEGER. 
    DO I = 0 TO 100:
    CREATE TEST.

    ASSIGN TEST.CUSTOMER_NAME="SMITH"
    TEST.ORDER_NUMBER=I  
    TEST.ORDER="BOOKS" 
    TEST.COST=45.00  
    TEST.CUSTOMER_NAME = "JACKSON" 
    TEST.ORDER_NUMBER=I 
    TEST.ORDER="PAPER CLIPS"  
    TEST.COST=1.7. 
    ASSIGN TEST.CUSTOMER_NAME="JONES"  
    TEST.ORDER_NUMBER =I 
    TEST.ORDER="PENCILS"
    TEST.COST=2.50
    TEST.CUSTOMER_NAME = "TURNER"
    TEST.ORDER_NUMBER = I  
    TEST.ORDER="PENS"
    TEST.COST=0.7. 
    END.
    END METHOD.

私はこれを使ってそれらを表示しようとしています

 FOR EACH TEST:   
        DISPLAY TEST.COST TEST.CUSTOMER_NAME TEST.ORDER TEST.ORDER_NUMBER.
        RETURN.
END.

ただし、結果には、入力されたデータの最後の行のみが表示されます。誰でも助けてもらえますか、表示機能が正しいのか、割り当てが正しいのかさえわかりません。

4

3 に答える 3

4

FOR EACH の「リターン」により、コードは最初のレコードの後に​​ループから抜け出します。そのステートメントを削除すると、すべてのレコードが表示されます。

FOR EACH TEST:
DISPLAY TEST.COST 
        TEST.CUSTOMER_NAME 
        TEST.ORDER 
        TEST.ORDER_NUMBER. 
RETURN.   /* this is why you're only seeing one record -  */
          /* get rid of this and you'll see all the records */
END.
于 2012-08-09T12:58:44.153 に答える
3

order# に 0 を割り当てることは避けたいと思います。それは人々を混乱させようとしているだけです。

define variable i as integer no-undo.

do i = 1 to 100:

  create test.

  assign
    test.order_number = i
    test.customer     = "smith"             /* you need some way to get   */
    test.order        = "books"             /* actual data for the rest   */
    test.cost         = random( 10, 100)    /* of the fields...           */
  .

end.

そして、以下を使用して注文を確認します。

for each test no-lock:
  display test.
end.
于 2012-08-09T12:13:26.573 に答える
1

ええ、私が必要としていたのは、各レコードの各割り当てごとの作成ステートメントだけで、それは機能しました。みんなありがとう、作業コードは次のようになります。

 CREATE TEST.

ASSIGN TEST.CUSTOMER_NAME="SMITH"
TEST.ORDER_NUMBER=I  
TEST.ORDER="BOOKS" 
TEST.COST=45.00.  
CREATE TEST.
ASSIGN  TEST.CUSTOMER_NAME = "TAYLOR" 
TEST.ORDER_NUMBER=I 
TEST.ORDER="PAPER CLIPS"  
TEST.COST=1.7.
CREATE TEST.
ASSIGN TEST.CUSTOMER_NAME="THOMPSON"  
TEST.ORDER_NUMBER =I 
TEST.ORDER="PENCILS"
TEST.COST=2.50.
CREATE TEST.
ASSIGN TEST.CUSTOMER_NAME = "TURNER"
TEST.ORDER_NUMBER = 2 
TEST.ORDER="PENS"
TEST.COST=0.7. 

FOR EACH TEST WHERE TEST.COST > 1.3 BY TEST.ORDER_NUMBER: DISPLAY TEST. 終わり。

于 2012-08-10T09:14:38.337 に答える