деление суммы двух значений в каждой группе в числовом формате с использованием rtf - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь разделить сумму двух значений в каждой группе, и затем я получил результат. Теперь я хочу получить результат в числовом формате '#, ## 0,00', но я получил ошибку 'XML -22047: (Ошибка) Неверное создание экземпляра' xsl: when 'в контексте' _h '. Как я могу это сделать? Пожалуйста, смотрите мой код ниже, он работает, если я удалю xdofx: format_number.

<?xdoxslt:set_variable($_XDOCTX, 'a', sum(current-group()/OR_AMOUNT))?>
<?xdoxslt:set_variable($_XDOCTX, 'b', sum(current-group()/WT_TOTAL))?>

<?xdofx:format_number(<?choose:?><?when: sum(current-group()/OR_AMOUNT)=0?>0<?end when?><?when: sum(current-group()/OR_AMOUNT)>0?><?xdofx: format_number(xdoxslt: get_variable($_XDOCTX,’b’) div xdoxslt:get_variable($_XDOCTX,’a’),’#,##0.00’,’EURO’)?><?end when?><?otherwise:?>0<?end otherwise?><?end choose?>

Спасибо,

Лоуренс

1 Ответ

0 голосов
/ 20 января 2020
<?xdofx:format_number(
    <?choose:?>
        <?when: sum(current-group()/OR_AMOUNT)=0?>
            0
        <?end when?>
        <?when: sum(current-group()/OR_AMOUNT)>0?>
             <?xdofx: format_number(xdoxslt: get_variable($_XDOCTX,’b’) div xdoxslt:get_variable($_XDOCTX,’a’),’#,##0.00’,’EURO’)?>
        <?end when?>
        <?otherwise:?>
            0
        <?end otherwise?>
    <?end choose?>

Первая часть <?xdofx:format_number( открывает скобку ( и элемент <?. Оба никогда не закрываются. Это неверный синтаксис. Вы также не можете открыть элемент, а затем открыть новый элемент перед закрытием первого. <?a <?b?> ?> неверно.

Неясно, зачем вам нужна первая format_number функция в любом случае. Вы форматируете значение, когда OR_AMOUNT)>0, а в других случаях у вас есть жесткий код 0. Что вы пытаетесь отформатировать?

Это будет работать:

<?choose:?>
    <?when: sum(current-group()/OR_AMOUNT)=0?>
        0
    <?end when?>
    <?when: sum(current-group()/OR_AMOUNT)>0?>
       <?xdofx: format_number(xdoxslt: get_variable($_XDOCTX,’b’) div xdoxslt:get_variable($_XDOCTX,’a’),’#,##0.00’,’EURO’)?>
    <?end when?>
    <?otherwise:?>
        0
    <?end otherwise?>
<?end choose?>

Или, если вы действительно хотите маску на жестко закодированных 0 s:

<?choose:?>
    <?when: sum(current-group()/OR_AMOUNT)=0?>
        <?xdofx: format_number(0,’#,##0.00’,’EURO’)?>
    <?end when?>
    <?when: sum(current-group()/OR_AMOUNT)>0?>
        <?xdofx: format_number(xdoxslt: get_variable($_XDOCTX,’b’) div xdoxslt:get_variable($_XDOCTX,’a’),’#,##0.00’,’EURO’)?>
    <?end when?>
    <?otherwise:?>
        <?xdofx: format_number(0,’#,##0.00’,’EURO’)?>
    <?end otherwise?>
<?end choose?>
...