如果临时表的字段数据类型类似于表名 - Progress 4GL,如何从临时表获取标签?

Bha*_*rat 1 progress-4gl openedge

我是 4GL 的新手。我总是使用下面的查询将临时表中的数据导出为 .csv 文件。为了给出标题标签,我进行了硬编码。是否可以从临时表字段本身获取标签?如果是,请帮助我修改查询。

DEFINE TEMP-TABLE ttdata NO-UNDO
FIELD cCustomerName LIKE Customer.NAME
FIELD cAddress      LIKE Customer.Address
.

OUTPUT TO VALUE(SESSION:TEMP-DIRECTORY + "temp.csv").

 PUT UNFORMATTED "customer Name,Customer Address" SKIP.

 FOR EACH ttdata NO-LOCK:
    EXPORT DELIMITER "," ttdata.
 END.

OUTPUT CLOSE.
Run Code Online (Sandbox Code Playgroud)

Mik*_*ner 5

您可以像这样迭代临时表的默认缓冲区的缓冲区字段:

DEFINE TEMP-TABLE ttdata NO-UNDO
    FIELD cCustomerName LIKE Customer.NAME
    FIELD cAddress      LIKE Customer.Address 
    FIELD cMonthQuota   LIKE Salesrep.MonthQuota    
    .

DEFINE VARIABLE i AS INTEGER NO-UNDO. 
DEFINE VARIABLE j AS INTEGER NO-UNDO. 
DEFINE VARIABLE iCount AS INTEGER NO-UNDO.         
DEFINE VARIABLE iExtent AS INTEGER     NO-UNDO.
          
OUTPUT TO VALUE(SESSION:TEMP-DIRECTORY + "temp.csv").

ASSIGN iCount = BUFFER ttData:NUM-FIELDS .

DO i = 1 TO iCount:
    iExtent = BUFFER ttData:BUFFER-FIELD (i):EXTENT .
    
    IF iExtent > 1 THEN
    DO:
        DO j = 1 TO iExtent:
            PUT UNFORMATTED 
                (IF i > 1 OR j > 1 THEN "," ELSE "") 
                SUBSTITUTE ("&1[&2]",
                            BUFFER ttData:BUFFER-FIELD (i):LABEL,
                            j) .
        END.        
    END.
    ELSE
        PUT UNFORMATTED 
            (IF i > 1 THEN "," ELSE "") 
            BUFFER ttData:BUFFER-FIELD (i):LABEL .
END.

PUT UNFORMATTED SKIP.

FOR EACH ttdata NO-LOCK:
   EXPORT DELIMITER "," ttdata.
END.

OUTPUT CLOSE.
Run Code Online (Sandbox Code Playgroud)