2012-09-04 67 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