2014-04-04 113 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.