Клин 4гл Дисплей 2 для каждого? - PullRequest
0 голосов
/ 22 ноября 2018

Допустим, у меня есть 2 для каждого оператора с 2 ни одной связанной таблицей. Первая -

for each table-1 
   disp table-1.col1 
        table-1.col2.
end. 

for each table-2
   disp table-2.col1
        table-2.col2.
end.

, и она отображается мне так:

table-1.col1 table-1.col2 
table-1.col1 table-1.col2
table-1.col1 table-1.col2

table-2.col1 table-2.col2
table-2.col1 table-2.col2
table-2.col1 table-2.col2

Я бы хотела, чтобыотобразить как это

---------- Table 1 ---------      ---------- Table 2 --------
|table-1.col1 table-1.col2 |      |table-2.col1 table-2.col2|      
|table-1.col1 table-1.col2 |      |table-2.col1 table-2.col2|
|table-1.col1 table-1.col2 |      |table-2.col1 table-2.col2|

Как это сделать?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Поскольку таблицы не связаны, вам придется выполнить некоторые манипуляции с данными, чтобы получить вывод параллельной диаграммы, который вы ищете.Вы можете создать временную таблицу «line», которая содержит четыре поля, которые вы хотите отобразить в каждой выходной строке.Просмотрите каждую из таблиц, добавив данные записи в каждую строку.Затем просмотрите таблицу временных строк и выведите данные строки.

DEFINE VARIABLE linecnt AS INTEGER NO-UNDO.

DEFINE TEMP-TABLE ttLine
    FIELD linenum AS INTEGER
    FIELD tbl1col1 AS CHARACTER
    FIELD tbl1col2 AS CHARACTER
    FIELD tbl2col1 AS CHARACTER
    FIELD tbl2col2 AS CHARACTER
    INDEX Idx1 IS PRIMARY linenum.

linecnt = 1.  /* Initialize the line counter. */

/* Go thru table-1, creating a ttLine for each record. */
FOR EACH table-1 NO-LOCK:
    CREATE ttLine.
    ASSIGN
        ttLine.linenum = linecnt
        ttLine.tbl1col1 = table-1.col1 
        ttLine.tbl1col2 = table-1.col2
        linecnt = linecnt + 1.
END. 

linecnt = 1.  /* Reset the line counter. */

/* Go thru table-2, adding data to ttLine and creating new records if necessary. */
FOR EACH table-2 NO-LOCK:
    FIND FIRST ttLine WHERE ttLine.linenum = linecnt NO-ERROR.
    IF NOT AVAILABLE(ttLine) THEN
    DO:
        CREATE ttLine.
        ttLine.linenum = linecnt.
    END.

    ASSIGN
        ttLine.tbl2col1 = table-2.col1
        ttLine.tbl2col2 = table-2.col2
        linecnt = linecnt + 1.
END.

/* Go thru ttLine, output data. */
OUTPUT TO VALUE("output.txt").

PUT UNFORMATTED
    "---------- Table 1 ---------      ---------- Table 2 --------"
    SKIP.

FOR EACH ttLine:
    PUT UNFORMATTED
        "|" + 
        STRING(ttLine.tbl1col1, "X(12)") + " " + STRING(ttLine.tbl1col2, "X(12)") + 
        " |      |" +
        STRING(ttLine.tbl2col1, "X(12)")  + " " + STRING(ttLine.tbl2col2, "X(12)") + 
        "|" 
        SKIP.
END.

OUTPUT CLOSE.

В приведенном выше примере вы получите искомый результат.Он также будет обрабатывать ситуации, когда у вас нет одинакового количества записей в каждой таблице.Это оставит пустые места, где нет данных.

0 голосов
/ 22 ноября 2018

Если вы укажете ширину и столбец (umn) для двух кадров, вы можете указать, чтобы они отображались рядом друг с другом.

for each Salesrep:                                                                      
   display salesrep.salesrep                                                            
           salesrep.repname                                                             
       with down frame frm-salesrep                                                     
       width 40.                                                                        
end.                                                                                    

for each Item:                                                                          
    display item.ItemNum                                                                
            item.ItemName                                                               
       with down frame frm-item                                                         
       col 41.                                                                                    
end.        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...