是否有与ELSE功能一起使用的行计数计数功能?

时间:2019-04-02 15:19:23

标签: salesforce ampscript salesforce-marketing-cloud

我有一个应在其中显示凭证详细信息的代码。如果没有凭证,则什么也不会显示。 我们使用RowCount> 0,但如果数据扩展中没有任何内容,则RowCount似乎不返回0。

如何更改If语句或ELSE语句。


%%[
SET   @voucherXML = AttributeValue("Vouchers")    
// build a rowset from the XML
SET @voucherRows        = BUILDROWSETFROMXML(@voucherXML, "//voucher", 1)
SET @voucherNames       = BUILDROWSETFROMXML(@voucherXML, "//voucher//name", 1)
SET @voucherAmounts      = BUILDROWSETFROMXML(@voucherXML, "//voucher//amount", 1)      
]%%


%%[If RowCount(@voucherRows) > 0 Then
FOR @index = 1 TO RowCount(@voucherRows) DO
// retrieve the items form the rowset from 1 to the count of rows   
]%%



      <p class="bdetails__bill__title" style="font-family: sans-serif; font-weight: 400; letter-spacing: 0.07em; line-height: 1.8em; Margin: 0; font-size: 11px;">
        %%=FIELD(ROW(@voucherNames,@index),
          "Value")=%%
        </p>


      <p class="bdetails__bill__value" style="font-family: sans-serif; font-size: 13px; font-weight: 400; letter-spacing: 0.07em; line-height: 1.8em; Margin: 0; text-align: right;">
        -%%=FIELD(ROW(@voucherAmounts,@index),
          "Value")=%%
       </p>


  <!--
%%[
NEXT @index
]%% -->
 <!--%%[ELSE]%%-->

<h2 class="bdetails__title" style="color: #0b0b0b; font-family: sans-serif; font-weight: 600; line-height: 1.385em; Margin: 0; font-size: 24px; text-transform: uppercase; width: 100%; min-width: 100%; text-align: center;">
        Bestelldetails
      </h2>
 <!--%%[ENDIF]%%
--> </p> 

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式解决此问题:先将值分配给变量,然后再引用该临时变量。尝试更改代码以执行以下操作:

SET @rowcount = RowCount(@voucherRows)
IF @rowcount >= 1 THEN

这应该可以解决问题。如果没有,您可以直接使用ISNULL函数。

答案 1 :(得分:0)

这可以写为

IF NOT EMPTY (@voucherRows) THEN

// No of statements 

ELSE 
// statements

ENDIF

谢谢