Progress 4gl - изменение цвета шрифта определенных значений при экспорте временной таблицы в файл .html

У меня есть ситуация, когда я хотел бы изменить цвет шрифта определенных значений во временной таблице при экспорте в .html с использованием progress 4gl.

Ниже приведена программа, которую я написал для вывода значений в файл .html. Пожалуйста, помогите мне решить эту проблему.

OUTPUT TO VALUE ("JITS_UserMonitor\JITS_UserMonitor.html").
PUT UNFORMATTED "<TABLE
                    style=' border: 1px solid black;border-collapse: collapse;width:100%; font-family: arial, sans-serif;'>
                        <tr style='background-color: #dddddd; text-align: center' >
                            <th style=' border: 1px solid black;border-collapse: collapse;'>USER Name</th>
                            <th style=' border: 1px solid black;border-collapse: collapse;'>USER Full Name</th>
                            <th style=' border: 1px solid black;border-collapse: collapse;'>USER CREATE Date</th>
                            <th style=' border: 1px solid black;border-collapse: collapse;'>USER LastLogin Date</th>
                            <th style=' border: 1px solid black;border-collapse: collapse;'>Need Disable</th>
                            <th style=' border: 1px solid black;border-collapse: collapse;'>Need DELETE</th>
                            <th style=' border: 1px solid black;border-collapse: collapse;'>DISABLE Status</th>
                            <th style=' border: 1px solid black;border-collapse: collapse;'>LAST Logon Days</th>
                        </tr>
                    " SKIP.
    FOR EACH tt_data WHERE tt_data.tt_needdisable EQ TRUE OR 
            tt_data.tt_needdelete EQ TRUE NO-LOCK BY tt_data.tt_days DESC:
        PUT UNFORMATTED SUBSTITUTE ("   <tr style = 'text-align: center'>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&1</td>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&2</td>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&3</td>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&4</td>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&5</td>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&6</td>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&7</td>
                                                <td style=' border: 1px solid black;border-collapse: collapse;'>&8</td>
                                            </tr>",
                                                tt_data.tt_userid,
                                                tt_data.tt_fullname,
                                                tt_data.tt_createddate,
                                                tt_data.tt_lastlogon, 
                                                tt_data.tt_needdisable,
                                                tt_data.tt_needdelete,
                                                tt_data.tt_disable,
                                                tt_data.tt_days) SKIP.
    END.    
PUT UNFORMATTED "</TABLE>" SKIP.
OUTPUT CLOSE.

person Varun Sulabha    schedule 11.01.2021    source источник
comment
Показ примера с временной таблицей с восемью полями не сделает ваш пример лучше, он просто добавляет шума.   -  person Stefan Drissen    schedule 12.01.2021


Ответы (1)


Вы можете использовать IF внутри своего оператора. Что-то вроде этого:

PUT UNFORMATTED 'This will output ' (IF TRUE THEN "something" ELSE "nothing").

Это выведет

Это выведет что-то

TRUE можно заменить на любую желаемую проверку.

Однако, поскольку вы используете SUBSTITUTE, вы можете рассмотреть возможность добавления переменной для цвета.

PUT UNFORMATTED SUBSTITUTE ("   <tr style = 'text-align: center'>
                                            <td style=' border: 1px solid black;border-collapse: collapse;color:&9;'>&1</td>
                                            <td style=' border: 1px solid black;border-collapse: collapse;'>&2</td>
                                            <td style=' border: 1px solid black;border-collapse: collapse;'>&3</td>
                                            <td style=' border: 1px solid black;border-collapse: collapse;'>&4</td>
                                            <td style=' border: 1px solid black;border-collapse: collapse;'>&5</td>
                                            <td style=' border: 1px solid black;border-collapse: collapse;'>&6</td>
                                            <td style=' border: 1px solid black;border-collapse: collapse;'>&7</td>
                                            <td style=' border: 1px solid black;border-collapse: collapse;'>&8</td>
                                        </tr>",
                                            tt_data.tt_userid,
                                            tt_data.tt_fullname,
                                            tt_data.tt_createddate,
                                            tt_data.tt_lastlogon, 
                                            tt_data.tt_needdisable,
                                            tt_data.tt_needdelete,
                                            tt_data.tt_disable,
                                            tt_data.tt_days,
                                            color
) SKIP.

И затем ваша программа должна установить цветовую переменную на основе той логики, которая вам нужна.

Вы также можете сопоставить обычные переменные и & -синтаксис ЗАМЕНЫ:

DEFINE VARIABLE cColor AS CHARACTER   NO-UNDO.
DEFINE VARIABLE iInt   AS INTEGER     NO-UNDO.

cColor = "black".
iInt = 12.

MESSAGE  SUBSTITUTE("This is a color " + cColor + " and a number &1", iInt).
person Jensd    schedule 11.01.2021
comment
Спасибо, Дженсд за помощь. Но я все еще не понимаю. Я пробовал использовать оператор IF, но он показывает неправильный синтаксис. Это могло быть связано с моими ограниченными знаниями в Progress. - person Varun Sulabha; 12.01.2021
comment
По моей ошибке, я пропустил ТОГДА часть IF-оператора. - person Jensd; 12.01.2021