2012-08-09 76 views
1

我很抱歉,這是一個非常簡單的問題,但是作爲ABL開放邊緣和im卡住的第一次使用者。我有輸入值到一個表像這樣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. 

顯示它們。但是結果只顯示輸入的數據的最後一行。任何人都可以提供幫助,我甚至不確定顯示功能是正確還是分配。

+0

找出最快的方法是查看datadictionary甚至獲得Test表中的記錄數。你的分配聲明有一次又一次分配的相同字段,這是故意的嗎?表測試的主要關鍵是什麼? – JTMon 2012-08-09 11:33:45

+0

我不知道你的意思,然後你說我一遍又一遍地分配相同的字段。我應該以不同的方式輸入數據行嗎?聽起來這可能是問題的根源。 – 2012-08-09 11:42:35

+1

你有2個賦值語句給一個創建語句。這意味着您仍然在使用同一個recrod並覆蓋以前的值。該循環的每次通過只會創建一個記錄(TURNER,PENS,0.7)。還有什麼是你的測試表的主要關鍵字段? – JTMon 2012-08-09 11:49:43

回答

3

中保存每個導致代碼的第一個記錄後退出循環「迴歸」。刪除該語句,您將看到所有記錄。

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. 
+1

每個CREATE有多個ASSIGN的問題也會讓他煩惱。 – 2012-08-09 15:46:53

3

我會避免分配一個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. 
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. 

每個測試WHERE TEST.COST> 1.3 TEST.ORDER_NUMBER: 顯示測試。 END。