2012-09-04 91 views
1

我試圖解決這個問題最近幾天,但不知道該怎麼做。我正在嘗試從列的表中獲取3條記錄。如果有任何Informix 4GL大師出現,我需要一些幫助。I4GL循環查詢

 declare s_curs cursor for 
      SELECT * FROM crcharge 
       WHERE chargenum IN 
       (SELECT shtwrd_no FROM crbookid WHERE crbookid.book_no = rpt.book_no) 

        let chgkey_count = 1 
      FOREACH s_curs into z_charge.* 
        let t_col = 15 
       if chgkey_count <= 3 then 
        let chgkey_count = chgkey_count + 1 
        let chgkey_count = t_chgkey 
        let scratch = z_charge.chgkey 
        let rpt.chgkey = scratch 
        call make_charge_section(scratch) returning rpt.chgkey 
        print 
        column 1, ESC, "&a15.5R",ESC,"&a12C", rpt.chgkey #t_col+2 , 

       end if 
      END FOREACH 
+0

掙扎,看看這是什麼,但是這讓chgkey_count = chgkey_count + 1,接着用let chgkey_count = t_chgkey,有點跳出代碼.. –

+0

你的術語是犯罪嫌疑人;您無法從列中獲取記錄,但您可以從表中獲取記錄。 –

回答

0

我覺得你的問題是,我已經在代碼的下面(輕度)修訂註釋掉行:

DECLARE s_curs CURSOR FOR 
    SELECT * FROM crcharge 
    WHERE chargenum IN 
      (SELECT shtwrd_no FROM crbookid WHERE crbookid.book_no = rpt.book_no) 

LET chgkey_count = 0 
FOREACH s_curs INTO z_charge.* 
    IF chgkey_count >= 3 THEN 
     EXIT FOREACH 
    END IF 
    LET chgkey_count = chgkey_count + 1 
    --LET chgkey_count = t_chgkey  -- Probable problem 
    LET scratch = z_charge.chgkey 
    LET rpt.chgkey = scratch 
    CALL make_charge_section(scratch) RETURNING rpt.chgkey 
    PRINT COLUMN 1, ESC, "&a15.5R",ESC,"&a12C", rpt.chgkey 
END FOREACH 

而且我想我會通過寫作更加簡化代碼:

LET chgkey_count = 0 
FOREACH s_curs INTO z_charge.* 
    IF chgkey_count >= 3 THEN 
     EXIT FOREACH 
    END IF 
    LET chgkey_count = chgkey_count + 1 
    LET rpt.chgkey = make_charge_section(z_charge.chgkey) 
    PRINT COLUMN 1, ESC, "&a15.5R",ESC,"&a12C", rpt.chgkey 
END FOREACH 
+0

我試過了,但我認爲我們錯過了一些東西,我也可能會在IIUG上發佈它。謝謝。 – MJJ3

+0

我同意,但你沒有說過什麼是錯的,真的。例如,你是否試圖在代碼中的點顯示關鍵數據(如'chgkey_count'和'z_charge.chkkey')? FOREACH執行得太頻繁,還是不夠頻繁? SELECT會返回任何東西嗎? SELECT中缺少一個條件嗎?你能否顯示錶格的樣本數據;你能夠展示足夠的表格模式來支持示例數據嗎? –

+0

現在它正在像這樣打印34CC 2539(4a)結果假設打印像這樣CC 259(4),CC 253(a)。謝謝 – MJJ3