2014-04-04 72 views
1

我有csv文件。我需要阅读它。用数据库查找并显示一些数据。 之后,我需要将收集的数据导出到csv输出文件。 这里是我的代码:导入/导出数据到正在进行的csv文件4gl

/********** DEFINE TABLES **********/ 
DEFINE TEMP-TABLE TT 
    FIELD AAA20 AS CHAR 
    . 

DEFINE TEMP-TABLE RES-T 
    FIELD CIF  AS CHAR label "номер клиента" 
    FIELD NAME  AS CHAR label "имя клиента" 
    FIELD TEL  AS CHAR label "телефон 1" 
    FIELD TLX  AS CHAR label "телефон 2" 
    FIELD FAX  AS CHAR label "сот. телефон" 
    FIELD AAA20  AS CHAR label "номер счета" 
    . 

/********** DEFINE QUERIES **********/ 
DEFINE QUERY Q1 FOR TT, AAA, CIF. 

/********** DEFINE WIDGETS **********/ 
DEFINE BROWSE B1 QUERY Q1 
/*FOR EACH AAA, EACH CIF OF AAA:*/ 
    DISPLAY CIF.CIF  label "номер клиента" 
     CIF.NAME  label "имя клиента" 
     CIF.TEL  label "телефон 1" 
     CIF.TLX  label "телефон 2" 
     CIF.FAX  label "сот. телефон" 
     AAA.AAA20  label "номер счета" WITH 25 DOWN SEPARATORS 
     . 

DEFINE BUTTON BTN-EXIT LABEL "EXIT". 

/********** DEFINE FRAMES **********/ 
DEFINE FRAME F1 
    B1 AT ROW 1 COLUMN 2 
    BTN-EXIT AT ROW 1 COLUMN 1 
     WITH NO-BOX CENTERED. 

/********** MAIN LOGIC **********/ 
INPUT FROM VALUE("Education/TRIUMF.csv"). 
REPEAT: 
    CREATE TT. 
    IMPORT DELIMITER "," TT. 
END. 
INPUT CLOSE. 

OPEN QUERY Q1 FOR EACH TT, 
     EACH AAA OF TT, 
     EACH CIF OF AAA. 

OUTPUT TO VALUE("MYCSV.CSV"). 
FOR EACH RES-T: 
    EXPORT DELIMITER "," RES-T 
END. 
OUTPUT CLOSE. 

ENABLE ALL WITH FRAME F1. 
WAIT-FOR CHOOSE OF BTN-EXIT. 

但是,有很多问题。我是新进展4gl。任何人都可以帮忙吗?

+0

我猜你想从每条记录中获得多个字段 - 在这种情况下,你需要在TT定义中指定每个字段而不是单个字段。你能提供一行输入数据,以便我们看到它的样子吗? –

+0

尝试具体说明“许多问题”。很难解决没有说明的问题。 –

回答

4

这是帮助说,关于导入的内容:

IMPORT语句

读取可能已被出口建立了一个输入文件中的一行。

语法

IMPORT 
[ STREAM stream | STREAM-HANDLE handle ] 
[ DELIMITER character ] 
[ record [   EXCEPT field ... ]  | UNFORMATTED field ] 
[ NO-LOBS ] [ NO-ERROR ]. 

着眼于该行

[ record [   EXCEPT field ... ]  | UNFORMATTED field ] 

基本字义:

也可以使用Import或者与整个记录(以及可能使用EXCEPT排除该记录的字段)或使用UNFORMATTED到特定字段(记录或变量)。

你要做的是:

IMPORT DELIMITER "," TT. 

这意味着这一进展将读取输入源的一行,用逗号(,)分隔,然后将每个分隔的字符串到的一个领域名为TT的临时表。

在你的情况下TT只有一个字段(aaa20)。该字段将包含文件中的第一个带分隔符的字符串。如果文件在每一行上有更多的分隔字符串,数据将丢失。

你可以做两件事情:

1)添加更多的领域向临时表。这将填充更多数据的这些字段。您不需要更改导入语句。

DEFINE TEMP-TABLE TT 
    FIELD AAA20 AS CHAR 
    FIELD secondfield AS CHAR 
    FIELD thirdfield AS CHAR. 
    /* etc and you most likely want other names */ 

2)将整行导入字段(并因此删除分隔符)。这会将整行放入同一个字段(AAA20)。很可能这不是你想要做的。然后,TT的AAA20将包含整行(使用逗号分隔符和其他所有行)。

IMPORT UNFORMATTED TT.