【问题标题】:Writing Temp table value into .csv file将临时表值写入 .csv 文件
【发布时间】:2012-02-20 09:54:41
【问题描述】:

我们已经动态创建了一个临时表。我们想将完整的表格放入 .csv 文件中。怎么办?

DEF VAR ttH AS HANDLE NO-UNDO.
ttH:CREATE-LIKE(hBuffer).
ttH:Temp-table-prepare("tmytable")

【问题讨论】:

    标签: progress-4gl openedge


    【解决方案1】:

    因为您是动态创建临时表的,所以不能使用 EXPORT 语句(至少据我所知)。您可以做的是首先动态输出字段名,然后是表的字段值。像这样:

    DEFINE VARIABLE hQuery  AS HANDLE NO-UNDO.
    DEFINE VARIABLE ttH     AS HANDLE NO-UNDO.
    
    /* Define a new output stream  */
    DEFINE STREAM s1.
    OUTPUT stream s1 to "myCSV.csv".
    
    /* Create a query for the contents of your temp-table */
    CREATE QUERY hQuery.
    /* Important: we need to use the temp-tables default buffer handle, 
    /* not the hBuffer handle to the original table! */
    hQuery:SET-BUFFERS (ttH:DEFAULT-BUFFER-HANDLE).
    /* Use the name you created before for the FOR EACH clause */
    hQuery:QUERY-PREPARE("FOR EACH tmytable").
    hQuery:QUERY-OPEN().
    hQuery:GET-FIRST().
    
    /* Write out the names of the fields as header in the first row */
    DEFINE VARIABLE i AS INTEGER NO-UNDO.
    DO i = 1 TO ttH:DEFAULT-BUFFER-HANDLE:NUM-FIELDS:
        PUT STREAM s1 UNFORMATTED ttH:DEFAULT-BUFFER-HANDLE:buffer-field(i):name + ",".
    END.
    PUT STREAM s1 UNFORMATTED SKIP.
    
    /* Walk through the query and output each field seperately. */
    REPEAT:  
        hQuery:GET-NEXT().  
        IF hQuery:QUERY-OFF-END THEN LEAVE.  
    
        DO i = 1 TO ttH:DEFAULT-BUFFER-HANDLE:NUM-FIELDS:
            PUT STREAM s1 UNFORMATTED ttH:DEFAULT-BUFFER-HANDLE:buffer-field(i):buffer-value ",".
        END.
        PUT STREAM s1 UNFORMATTED SKIP.
    END.
    
    OUTPUT stream s1 close.
    

    请注意,这可能不适用于大量表格条目!

    【讨论】:

    • 这不适用于具有范围的字段 - 因为您需要做一些考虑到这一点的事情。
    • 但希望你没有傻到一开始就将字段定义为数组;)
    • 一个人在这件事上并不总是有选择的余地。
    • 这对我有用.. 感谢大家提供的宝贵信息
    【解决方案2】:

    有关范围处理语法,请参阅Progress KB P4410。您可能还想在 QUERY-PREPARE 之前将 FORWARD-ONLY=TRUE 添加到查询中,以提高性能。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2013-12-06
      • 2010-11-10
      • 2012-10-27
      • 2021-12-12
      • 2016-09-26
      • 1970-01-01
      相关资源
      最近更新 更多